在下面的 2 个查询中,结果集是相同的,但我想知道由于 ON 子句中比较参数的顺序,速度是否会有所不同。
在第一个查询中它匹配table1.c1 = table2.c1
,而第二个则相反。
SELECT * FROM table1 JOIN table2 ON (table1.c1 = table2.c1)
或者
SELECT * FROM table1 JOIN table2 ON (table2.c1 = table1.c1)
在下面的 2 个查询中,结果集是相同的,但我想知道由于 ON 子句中比较参数的顺序,速度是否会有所不同。
在第一个查询中它匹配table1.c1 = table2.c1
,而第二个则相反。
SELECT * FROM table1 JOIN table2 ON (table1.c1 = table2.c1)
或者
SELECT * FROM table1 JOIN table2 ON (table2.c1 = table1.c1)
这两个查询完全相同,它们之间没有区别。
使用第一种形式只是一个约定:
SELECT * FROM table1 JOIN table2 ON (table1.c1 = table2.c1)
自从 ON 子句中的布尔表达式返回 TRUE 以来,一条记录将被发送到结果集输出。如果其中一张表返回 0 条记录,即使 ON 子句返回 TRUE,结果集也将为空。因此,您希望如何在 ON 子句中编写布尔表达式没有区别。像这样意味着交叉加入!
干杯
Select *
From dbo.Person As A
Inner Join
dbo.PersonOrder As B
On 1 = 1