你有如何加速比這個查詢的一些想法:如何加快此查詢?
SELECT Vosol = (CASE WHEN EXISTS (SELECT Id
FROM trs.CollectionHeaderView AS chv
WHERE chv.ItemNum = itm.ItemNum
AND chv.CollectionType = '1')
THEN ISNULL(itm.Amount, 0)
ELSE 0
END) ,
Vakhast = (CASE WHEN EXISTS (SELECT Id
FROM trs.CollectionHeaderView AS chv
WHERE chv.ItemNum = itm.ItemNum
AND chv.CollectionType = '2')
THEN ISNULL(itm.Amount, 0)
ELSE 0
END)
FROM trs.TrsDocRcvItem AS itm
LEFT JOIN trs.TrsDocRcvHeader AS hdr ON itm.HeaderRef = hdr.Id
LEFT JOIN acc.DL AS dl ON dl.Id = hdr.DLRef
LEFT JOIN trs.TrsDocType AS docType ON docType.Id = hdr.DocTypeRef
INNER JOIN sle.SleCustomer AS customer ON customer.DLRef = dl.Id
LEFT JOIN trs.AccOperation AS operation ON operation.Id = itm.AccOperationRef
WHERE hdr.DocTypeRef NOT IN (1141, 1142, 1241, 1242)
AND (hdr.State = '1'
OR hdr.State = '2'
)
AND operation.StateType = '1'
我試圖優化SQL查詢現在約需6秒鐘執行。 我還能做些什麼來加速此查詢? 我正在使用Microsoft Sql Server。
你有一個執行計劃,所以我們可以看到瓶頸? – MarkD
你爲什麼加入'acc.DL'和'sle.SleCustomer'。它真的用於過濾記錄嗎? –
是的,我用過它。 –