改善前 TSQL 如下
SELECT
.................
FROM 派工工序 AS F
.................
LEFT JOIN
(
SELECT
KK.派工單號 ,
KK.工序 ,
KK.送達與否 ,
O.部門名稱 ,
MAX(KK.預定日期) AS 預定日期 ,
MAX(KK.預約者) AS 預約者 ,
MAX(KK.預約時段) AS 預約時段 ,
MAX(KK.優先順序) AS 優先順序 ,
FROM 物料預約 AS KK
JOIN 部門 AS O ON KK.處理部門編號 = O.部門編號
GROUP BY KK.派工單號 , KK.工序 , KK.送達與否 , O.部門名稱
) AS K ON K.派工單號 = F.派工單號
AND K.工序 = F.工序
.................
WHERE F.部門編號 = 'D203'
AND F.已完工數量 < S.派工數量
ORDER BY
.................
把 TSQL 語法改為 GROUP BY 彙總後再 JOIN TableSELECT
T.* ,
O.部門名稱
FROM
(
SELECT
KK.派工單號 ,
KK.工序 ,
KK.送達與否 ,
KK.處理編號 ,
MAX(KK.預定日期) AS 預定日期 ,
MAX(KK.預約者) AS 預約者 ,
MAX(KK.預約時段) AS 預約時段 ,
MAX(KK.優先順序) AS 優先順序
FROM 物料預約 AS KK
GROUP BY KK.派工單號 , KK.工序 , KK.送達與否 , KK.處理部門編號
) AS T
JOIN 部門 AS O ON T.處理部門編號 = O.部門編號
改善前執行計畫改善後執行計畫,Sort 操作子還在,有點礙眼,Orz
執行計畫比較
估計的子樹成本比較
TSQL 執行的 Statistics 是沒有甚麼改善,改善後執行計畫看起來還是很糟糕,但執行計畫成本改善不少
沒有留言:
張貼留言