内部连接与笛卡尔积的性能

nis*_*ntv 14 sql db2 join

可能重复:
显式vs隐式SQL连接

我想知道性能的差异

select * from A,B,C where A.x = B.y and B.y = C.z
Run Code Online (Sandbox Code Playgroud)

select * from A INNER JOIN B on A.x = B.y INNER JOIN C on B.y = C.z
Run Code Online (Sandbox Code Playgroud)

基本上我想知道内部连接是否比笛卡尔积更好?另外,内部连接是在内部进行的笛卡尔积?

小智 2

首先,这两个操作有两个不同的目的,而笛卡尔积为您提供了通过将一个表中的每一行连接到另一个表中的每一行而得到的结果。而内部联接(有时称为简单联接)是两个或多个表的联接,它仅返回满足联接条件的行。
现在来看看你在这里写的内容:
如果是笛卡尔积,首先创建一个由 A、B、C 组成的表,然后根据给定的条件,我们得到结果。但正如你所看到的,这是一个繁重的过程。
另一方面,内连接仅选择那些真正满足给定条件的结果。因此,这是实现最终结果的更好解决方案。
第一个是滥用 SQL 语言。

  • 只是对不知情的读者的澄清。这个答案是错误的。在 MySQL、SqlServer 和 PostgreSQL 中,问题中提出的两个选项之间没有性能差异。请参阅链接的副本以了解更多详细信息。 (17认同)