select no2 empid,c.workno,sum(qty) qty,max(wlevel) wlevel into #Emp_Level 
from salary a  inner join Wlevel c
on right(a.workno,3)=c.workno
where (a.date1 between @starttime and @endtime) and (@empid=''or a.no2 =@empid)
group by no2,c.workno
order by no2这条SQL运行要7秒钟,但是我把(@empid=''or a.no2 =@empid)改为( a.no2 =@empid or @empid='')
就要运行22秒钟,请问这是什么问题导致的呢,谢谢各位!!!

解决方案 »

  1.   

    写错了select no2 empid,c.workno,sum(qty) qty,max(wlevel) wlevel into #Emp_Level 
    from salary a  inner join Wlevel c
    on right(a.workno,3)=c.workno
    where (a.date1 between @starttime and @endtime) and (a.no2 =@empid or @empid='')
    group by no2,c.workno
    order by no2这条SQL运行要7秒钟,但是我把( a.no2 =@empid or @empid='') 改为
    (@empid=''or a.no2 =@empid)
    就要运行22秒钟,请问这是什么问题导致的呢,谢谢各位!!!
      

  2.   

    简单的说,就是SQL的解析的问题.
      

  3.   

    没有你的数据库里的信息,比较难判断
    不过可以打开查询分析器的“显示执行计划”,先后执行这语句,应该可以从SQL的执行计划看出个大概来