例子:
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好。