【发布时间】:2014-10-09 09:56:41
【问题描述】:
对于内连接,在JOIN ON 子句或WHERE 子句中应用过滤器的性能有什么不同吗?哪个效率更高,或者优化器会使它们相等?
加入
SELECT u.name
FROM users u
JOIN departments d
ON u.department_id = d.id
AND d.name = 'IT'
VS
在哪里
SELECT u.name
FROM users u
JOIN departments d
ON u.department_id = d.id
WHERE d.name = 'IT'
Oracle 11gR2
【问题讨论】:
-
测试每种方法时发生了什么?
-
应该没什么区别。您可以随时使用
EXPLAIN PLAN FOR查看计划或使用dbms_xplan函数查看实际执行计划。 -
在测试时,它们似乎是相同的,但我的理解是你会从中受益,包括加入过滤器(某种预过滤器)
-
查询引擎在执行查询之前自己进行优化。
-
这确实是问题的重复,“Inner join vs Where”,stackoverflow.com/questions/121631/inner-join-vs-where?rq=1。
标签: sql performance oracle inner-join where