第一种方式
select  a.c1,a.c2,b.c3
from a
left join b on a.c1=b.c1
where a.c1='dddd' and b.c2='xxxxx'
第二种方式
select *
(
select a.c1,a.c2,b.c3
from a
left join b on a.c1=b.c2
) ab
where c1='dddd' and c2='xxxxx'
这两个效率会一样吗??
为什么??SQL

解决方案 »

  1.   

    这个是笔误吧: a.c1=b.c2
      

  2.   

    where a.c1='dddd' and b.c2='xxxxx'where c1='dddd' and c2='xxxxx'条件不相同,不可比性where a.c1='dddd' and b.c2='xxxxx'与left join 等同于inner join 选中两个语句直接看执行计划
      

  3.   


    笔误第一种方式
    select  a.c1,a.c2,b.c3
     from a
     left join b on a.c1=b.c1
     where a.c1='dddd' and b.c2='xxxxx'
    第二种方式
    select *
     (
     select a.c1,a.c2,b.c3
     from a
     left join b on a.c1=b.c1
     ) ab
     where c1='dddd' and c2='xxxxx'
    这两个效率会一样吗??
     为什么?? 
      

  4.   


    应该是一样的,因为你的两个语句语义是一样的,所以关系引擎在解析的时候会做transformation,最后应该转换成相同的逻辑表达树,所以是一样的。
      

  5.   

    看执行计划哦,看sql server怎么决定他们的运行
      

  6.   

    应该是一样的,选中语句,点击CTRL+L,生成一下执行计划。
      

  7.   

    第一个是B.C2.第二个是A.C2一样么?