sql中join的区别

执行以下代码,可以清楚的看到区别:

declare @a table(a int,b int)
declare @b table(a int,b int)
insert @a values(1,1)
insert @a values(2,2)
insert @b values(1,1)
insert @b values(3,3)

--左:
select * from @a Aa left join @b Bb on Aa.a=Bb.a
--右:
select * from @a Aa right join @b Bb on Aa.a=Bb.a
--
select * from @a Aa join @b Bb on Aa.a=Bb.a
--
select * from @a Aa full join @b Bb on Aa.a=Bb.a
--完全
select * from @a,@b

 

注:1. join为 inner join 的简写,二者查询结果一样。

      2. outer join 不同于inner join,不能单独使用,必须指定方向。只能是 left outer join、right outer join 和 full outer join, 而我们一般使用这些的时候会省略outer。

 

两个语句的执行效率的比较:

语句为:  select * from  @a   Aa    join   @b   Bb   on   Aa.a=Bb.a  
     select   *   from   @a Aa, @b  Bb where  Aa.a=Bb.a  

关于这两条语句的执行效率很多人有不同的意见,起初我也认为 join的效率会高些,经过网上高手的指点,查看两者的执行计划,一切明了。执行计划的截图如下:

 

两者的执行计划没有任何区别,所以查询效率应该是一样的。

 

posted @ 2010-05-10 17:26  cct  阅读(424)  评论(0)    收藏  举报