作者jkimo (调整作息)
看板Database
标题Re: [SQL ] 请问语法问题
时间Fri Aug 29 19:42:54 2008
我自己回自己文好了,比较明显
原先的写法呀…不跑售出日期约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
1F:推 mcox:把where里用in 的地方,尽量改成用 exists 判断,就会快很多 08/30 11:47