首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

使用INNER JOIN 和EXISTS过滤数据那个执行效率更高解决思路

2012-01-30 
使用INNER JOIN 和EXISTS过滤数据那个执行效率更高例子:select*fromdbo.Gy_InOutSubINNERJOINdbo.Gy_InOut

使用INNER JOIN 和EXISTS过滤数据那个执行效率更高
例子:
  select   *  
          from   dbo.Gy_InOutSub   INNER   JOIN     dbo.Gy_InOutMain   ON     dbo.Gy_InOutSub.InOutMainID=dbo.Gy_InOutMain.=InOutMainID

        select   *  
          from   dbo.Gy_InOutSub   where   exists(   select   1   from   Gy_InOutMain     where     InOutMainID=Gy_InOutSub.InOutMainID)

主要是为了获得dbo.Gy_InOutSub表中的数据,使用   dbo.Gy_InOutMain   中的InOutMainID字段来过滤,但是并没有提取dbo.Gy_InOutMain中的数据,
使用那种方法执行效率更能高?为什么?先谢谢大家了


[解决办法]
如果dbo.Gy_InOutMain 的InOutMainID有重复,这没有可比性,因为两个查询的结果是不同的

如果dbo.Gy_InOutMain 的InOutMainID没有重复,个人认为效率差不多,如果两表的InOutMainID有索引,都将用到索引


[解决办法]
第一种方法好。
如果在InOutMainID数据列上创建了索引,则方法一的内连接就会走index seek的执行计划;相反,方法二是走index scan的执行计划,而通常seek的性能要比scan好。

热点排行