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

SQL查询效率的疑点

2013-09-07 
SQL查询效率的疑问SQL查询效率的疑问SQL2000,请问1语句和2语句效率哪个高?1语句ifexists(select1frompurch

SQL查询效率的疑问
SQL查询效率的疑问
SQL2000,请问1语句和2语句效率哪个高?


1语句
if   exists(select   1      from      purchasedetail
inner  join      purchasedetail_z   on   purchasedetail.billid=purchasedetail_z.billid    and   purchasedetail.itemno=purchasedetail_z.itemno   and   purchasedetail_z.vipwlztid=0  ------注意这里

inner  join  material_z     on  material_z.materialid=purchasedetail.materialid   and   material_z.vipsywlztid=1  
where  purchasedetail.billid=@billid  and  purchasedetail.itemno=@itemno
    )
begin 
  RAISERROR('请检查物料是否选择状态!%d',16,1)
ROLLBACK
RETURN
END



2语句
if   exists(select   1      from      purchasedetail
inner  join      purchasedetail_z   on   purchasedetail.billid=purchasedetail_z.billid    and   purchasedetail.itemno=purchasedetail_z.itemno  
inner  join  material_z     on  material_z.materialid=purchasedetail.materialid   and   material_z.vipsywlztid=1
where  purchasedetail.billid=@billid  and  purchasedetail.itemno=@itemno    and   purchasedetail_z.vipwlztid=0  ------注意这里

    )
begin 
  RAISERROR('请检查物料是否选择状态!%d',16,1)
ROLLBACK
RETURN
END



[解决办法]
把两个语句放到一个查询页面上,然后按ctrl+m,然后按F5,看看对应的百分比,百分比小的开销小,sqlserver是基于开销的,开销较小的一般来说性能较好
[解决办法]
前一个效率高,因为在inner join的时候,已经把无用的数据剔除了。
[解决办法]
2个语句的效率一致,对比一下执行计划就知道了.
[解决办法]
对于INNER JOIN来说,条件放在ON中和放在WHERE中,是一模一样的,没有任何区别。可以认为是两种不同的写法。


但对于LEFT JOIN来说,需要注意了,条件放在ON和放在WHERE中,产生的结果是不一样的。具体可参考SQL SERVER 2005技术内幕T-SQL查询,第一章

热点排行