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