"加入"顺序是否会导致不同的查询性能

Sue*_* Su 5 sql t-sql sql-server

我有2个表(table1 table2),table2大于table1.

脚本1:

SELECT t1.A, t2.B
FROM table1 AS t1
JOIN table2 AS t2 ON t1.PK = t2.FK
Run Code Online (Sandbox Code Playgroud)

脚本2:

SELECT t1.A, t2.B
FROM table2 AS t2
JOIN table1 AS t1 ON t1.PK = t2.FK
Run Code Online (Sandbox Code Playgroud)

性能脚本#1是否优于脚本#2?

sag*_*agi 2

您正在使用INNER JOIN所以答案是否定的

由于联接类型,这将产生完全相同的数据量,并且您在两个查询中通过相同的关系进行联接,因此它们基本上是相同的。

如果您使用LEFT JOIN,情况会有所不同,因为在左连接中,保留主表(左)中的所有数据,以及详细表(右)中的所有匹配数据。

因此,如果您使用左连接,并将较大的表放在左侧,那么查询将产生更多数据,并且可能会比将较大的表放在右侧更慢。