1

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

3 回答 3

5

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

SQL Server 可以轻松地将一个转换为另一个。但是,检查执行计划是确定的唯一方法。

于 2012-10-09T07:58:28.910 回答
1

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

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

我会说第一个选项更清楚。

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

于 2012-10-09T07:56:51.973 回答
0

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

于 2012-10-09T09:14:26.817 回答