创建连接 2 个表的查询时。我想到了 2 种编写查询的可能方法。下面是一个简化的示例。你能告诉我哪个会更快吗?
SELECT t1.a,
t2.a
FROM table1 t1
JOIN table2 t2
ON t1.b = t2.b
WHERE t2.c = 'test'
或
SELECT t1.a,
t2.a
FROM table1 t1
JOIN (SELECT a, b
FROM table2
WHERE c = 'test') t2
ON t1.b = t2.b
他们应该给出完全相同的计划。
SQL Server可以轻松地将一个转换为另一个。不过,检查执行计划是确定的唯一方法。
这取决于您的数据和数据结构。
可以使用 SSMS 中"查询"菜单上的"包括实际执行计划"选项自行查找。
我想说第一个选项更清楚。
此外,编写的第二个查询实际上不起作用。
如果你在 table1.id 和 table2.id 列上有适当的索引,那么我认为第一个查询会表现得更好。