我想获取位于美国的员工的帐户信息。如果员工没有位置信息,则表示员工居住在亚洲。
exec sp_executesql N'select top 1 * from Account where /
exists( select * from employee where Acc_id=emp_id and @emp_loc=''Asia'') /
or (not exists (select * from emplyee where Acc_id=emp_id ) and /
@emp_loc=''Asia'')'N' @emp_loc varchar(10)',@emp_loc='America'
上述查询执行时间超过5分钟。
如果我对参数进行硬编码。它只需要1秒钟。
SELECT top 1 * FROM Account WHERE exists( SELECT * FROM employee WHERE Acc_id=emp_id AND 'America'='Asia' ) OR (not exists( SELECT * FROM employee WHERE Acc_id=emp_id ) AND 'America'='Asia' )
为什么使用参数让性能非常慢?
答案 0 :(得分:0)
我认为条件过滤器是where Acc_id=emp_id and emp_loc=@emp_loc
试试吧!! !!