SQL Server查询优化 - WHERE子句与SELECT子查询

时间:2012-10-09 07:55:04

标签: sql-server query-optimization

创建连接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 

3 个答案:

答案 0 :(得分:5)

他们应该给出完全相同的计划。

SQL Server很容易将一个转换为另一个。检查执行计划是唯一可以确定的方法。

答案 1 :(得分:1)

这取决于您的数据和数据结构。

您可以使用SSMS中“查询”菜单上的“包括实际执行计划”选项自行查找。

我会说第一种选择更清楚。

此外,写入的第二个查询实际上不起作用。

答案 2 :(得分:0)

如果你在table1.id和table2.id列上有适当的索引,那么我认为第一个查询会表现得更好。