(在oracle中)在性能上是否存在差异
Select * from Table1 T1
Inner Join Table2 T2 On T1.ID = T2.ID和
Select * from Table1 T1, Table2 T2
Where T1.ID = T2.ID发布于 2008-12-10 01:25:59
不是的!相同的执行计划,请看这两个表:
CREATE TABLE table1 (
id INT,
name VARCHAR(20)
);
CREATE TABLE table2 (
id INT,
name VARCHAR(20)
);使用内部联接的查询的执行计划:
-- with inner join
EXPLAIN PLAN FOR
SELECT * FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id;
SELECT *
FROM TABLE (DBMS_XPLAN.DISPLAY);
-- 0 select statement
-- 1 hash join (access("T1"."ID"="T2"."ID"))
-- 2 table access full table1
-- 3 table access full table2使用WHERE子句的查询的执行计划。
-- with where clause
EXPLAIN PLAN FOR
SELECT * FROM table1 t1, table2 t2
WHERE t1.id = t2.id;
SELECT *
FROM TABLE (DBMS_XPLAN.DISPLAY);
-- 0 select statement
-- 1 hash join (access("T1"."ID"="T2"."ID"))
-- 2 table access full table1
-- 3 table access full table2发布于 2008-09-23 15:15:37
如果查询优化器的工作做得很好,那么这些查询之间应该没有区别。它们只是指定相同期望结果的两种方式。
发布于 2008-09-23 15:23:42
它们应该是完全相同的。但是,作为一种编码实践,我更愿意看到连接。它清楚地表达了你的意图,
https://stackoverflow.com/questions/121631
复制相似问题