inv*_*igo 5 sql oracle performance inner-join where
对于内连接,在JOIN ON子句或WHERE子句中应用过滤器的性能是否有任何差异?哪个会更高效,还是优化器会使它们相等?
加入
SELECT u.name
FROM users u
JOIN departments d
ON u.department_id = d.id
AND d.name = 'IT'
Run Code Online (Sandbox Code Playgroud)
VS
哪里
SELECT u.name
FROM users u
JOIN departments d
ON u.department_id = d.id
WHERE d.name = 'IT'
Run Code Online (Sandbox Code Playgroud)
Oracle 11gR2
应该没有区别.优化器应该在两种情况下生成相同的计划,并且应该能够在连接之前,之后或期间应用谓词,在任何一种情况下都基于该特定查询的最有效方法.
当然,事实优化可以做一些事情,一般来说,是不能保证优化器会做一些实际的特定查询.随着查询变得越来越复杂,不可能彻底地考虑每个可能的查询计划,这意味着即使有完美的信息和完美的代码,优化器也可能没有时间做你想做的所有事情.您需要查看为两个查询生成的实际计划,以查看它们是否实际相同.
| 归档时间: |
|
| 查看次数: |
7588 次 |
| 最近记录: |