數據庫環境:SQL SERVER 2005
我們來看一下SQL語句及對應的數據量
SELECT COUNT(*)FROM cinvout_02 aWHERE ( a.dept_id IN ( SELECT RTRIM(dept_id) FROM ctlm2320 WHERE user1_id = '000008' AND zone_id = '' ) OR a.dept_id = '' OR ( a.dept_id IN ( SELECT RTRIM(b.dept_id) FROM ctlm2320 a , ctlm1003 b WHERE a.zone_id = b.zone_id AND a.user1_id = '000008' AND a.zone_id <> '' ) ) ) AND a.out_time >= '2014-07-01' AND a.out_time <= '2014-07-12' AND a.sts_flag = 'S'---------------------數據量------------------------- SELECT COUNT(*)FROM cinvout_02 aWHERE a.out_time >= '2014-07-01' AND a.out_time <= '2014-07-12' AND a.sts_flag = 'S'--214555 SELECT COUNT(*)FROM ctlm2320WHERE user1_id = '000008' AND zone_id = ''--0 SELECT COUNT(*)FROM ctlm2320 a , ctlm1003 bWHERE a.zone_id = b.zone_id AND a.user1_id = '000008' AND a.zone_id <> ''--3768
數據量不是很大,cinvout_02也走了索引查找,而且返回的數據才有214317行。按理說應該不會太慢,
可是,真實情況是,整條SQL要跑4分多鐘才全部出結果。
光靠猜是得不出答案的,我們通過執行計劃來分析為什么會出現這種情況。
新聞熱點
疑難解答