日期:2014-05-17  浏览次数:20539 次

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中,是一模一样的,没有任何区别。可以认为是两种不同的写法。