我有个查询,大概是这样的。
主要是这个WHERE里的子查询,如何优化呢
由于业务需要,这个查询,要在一个存储过程里执行7,8次,所以现在速度较慢。。
求大家指点。。谢谢
select xx,cc,vv,bb,nn from table A
join ..... B
join ..... C
join ..... D
where ((A.Sign_Man = @curMan )
or ( A.filed IN
(SELECT Stat_No FROM SystemInfo..Info_HR2Stat
WHERE HR_No = @curMan AND State = 1) and A.Sign_Man <> @curMan )
or ((dbo.aFunc(B.CurYear,B.CurMonth,B.Gs_No)=@curMan ) and A.Sign_Man <> @curMan
and A.filed not IN
(SELECT Stat_No FROM C
WHERE HR_No = @curMan AND State = 1)))
------解决方案--------------------
把where后面的or条件中的子查询结果集存入临时表,然后关联临时表去查询。