SQL Server Join:表中的全表与选定列

时间:2015-03-19 03:31:53

标签: sql sql-server-2008

只是想知道......

之间有什么区别
select 
    a.field1, b.field1 
from 
    table1 a
inner join 
    table2 b on a.field2 = b.field2

select 
    a.field1, b.field1 
from 
    table1 a 
inner join 
    (select field1, field 
     from table2 ) b on a.field2 = b.field2

我在我正在处理的其中一个遗留系统中看到过这个SQL查询。我立即检查了执行计划以进行比较,但结果似乎相同。

抱歉这么无知。 :)

1 个答案:

答案 0 :(得分:1)

我认为我们会用它来优化效果。

参考您的第一个查询;

select a.field1, b.field1  
from table1 a  
inner join table2 b   
on a.field2 = b.field2

实际上你在table2中只使用了2列 (b.field1显示,b.field2连接表) 因此,不使用检索table2中的所有字段。 如果table2由高度加权的列组成(例如:image,blob),则查询响应时间会变慢。