SQL 語法執行速度很慢,如何改善?? |
尚未結案
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
請教各位前輩 以下SQL 語法執行速度很慢
不知如何修改才可加快速度
MS SQL 2000
Update EC母倉加權單價 SET EC母倉加權單價.加權單價= Isnull( ( Select Top 1 CASE WHEN ( isnull(期末數量,0)<>0 ) THEN Round(期末金額/期末數量,8) ELSE 0 END AS 期末單價 From (AC歷史庫存 INNER JOIN AA倉庫 on AC歷史庫存.倉庫=AA倉庫.倉庫) Where 年月<@CountYM And AA倉庫.母倉代號=EC母倉加權單價. 母倉代號 And AC歷史庫存.產品編號=EC母倉加權單價.產品編號 And AC歷史庫存.批號=EC母倉加權單價. 批號 And isnull(期末金額,0)<>0 And isnull(期末數量,0)<>0 Order By 年月 DESC ) ,0) From EC母倉加權單價 Where EC母倉加權單價.年月=@CountYM And 加權單價=0 謝謝各位前輩 |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Hi, 試試,
Update EC母倉加權單價 SET EC母倉加權單價.加權單價= Isnull( ( Select Top 1 Round(期末金額/期末數量,8) AS 期末單價 From (AC歷史庫存 INNER JOIN AA倉庫 on AC歷史庫存.倉庫=AA倉庫.倉庫) Where 年月<@CountYM And AA倉庫.母倉代號=EC母倉加權單價. 母倉代號 And AC歷史庫存.產品編號=EC母倉加權單價.產品編號 And AC歷史庫存.批號=EC母倉加權單價. 批號 And isnull(期末金額,0)<>0 And isnull(期末數量,0)<>0 Order By 年月 DESC ) ,0) From EC母倉加權單價 Where EC母倉加權單價.年月=@CountYM And 加權單價=0因為 where condition 己有 isnull(期末數量,0)<>0 , 所以前面的 case .. end 可以不用再算一次, 一定都是符合的啦, 另外請問你的 期末金額, 期末數量 會有 0 的值嗎? 若不會有 0 的值, 就還有更快的寫法. |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |