1

鉴于这两个表:

A.a   B.b
-     -
1     3
2     4
3     5
4     6

如果我想要交叉匹配,我可以两者都做

SELECT * FROM A, B WHERE A.a = B.b; # and
SELECT * FROM A INNER JOIN B ON (A.a = B.b)

或者,如果我想要左外连接右外连接

SELECT * FROM A,B WHERE A.a = B.b(+); # and
SELECT * FROM A LEFT OUTER JOIN B ON (A.a = B.b)

但是查询语句之间是否存在引擎/性能差异?

4

2 回答 2

4

他们很可能在现代 RDBMS 上生成相同的计划。JOIN语法是自 1992 年以来的 ANSI SQL 语法。

于 2012-09-19T01:03:54.857 回答
0

理论上,多选会首先从两个表中选择所有数据,将所有数据存储在内存中,然后将每个数据与每个人进行比较。但实际上,没有数据库会这样做。任何现代数据库都会优化此查询,以便多选和 JOIN 版本的处理方式相同。

于 2012-09-19T01:23:19.200 回答