Re: [SQL ] 請問語法問題

看板Database作者 (調整作息)時間17年前 (2008/08/29 19:42), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
我自己回自己文好了,比較明顯 原先的寫法呀…不跑售出日期約7秒,跑售出日期5分鐘以上才可以跑完 後來想到一個寫法如下,跑售出日期才八秒: SELECT SUPNO.SUP_NO,SUPNO.NAM,PRDNO01.PRD_NO,PRDNO01.WHR, (SELECT MAX(A.DAT) FROM SALNO A WHERE A.SAL_NO IN (SELECT B.SAL_NO FROM SALNO01 B WHERE B.PRD_NO = PRDNO01.PRD_NO AND B.WHR = PRDNO01.WHR ) ) AS DAT1, (SELECT MAX(A.DAT) FROM SALNO A WHERE A.SAL_NO IN (SELECT C.SAL_NO FROM SALNO02 C WHERE C.PRD_NO = PRDNO01.PRD_NO AND C.WHR = PRDNO01.WHR ) ) AS DAT2 FROM PRDNO LEFT OUTER JOIN SUPNO ON SUPNO.SUP_NO = CUSNO.SUP_NO LEFT OUTER JOIN PRDNO01 ON PRDNO01.PRD_NO = PRDNO.PRD_NO 在 While 迴圈裡判斷是DAT1大,還是DAT2大 但可惜的是…他可以跑DB2、MS SQL,卻不能跑PARDOX 後來就把DAT1及DAT2的語法移到WHILE裡跑 這樣要花1分50多秒… 還有更好的解法嗎? 因為不要售出欄位只需要七秒,但多一個欄位跑1分50多秒有點久 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.80.96

08/30 11:47, , 1F
把where裏用in 的地方,儘量改成用 exists 判斷,就會快很多
08/30 11:47, 1F
文章代碼(AID): #18j-2_oR (Database)
文章代碼(AID): #18j-2_oR (Database)