你有如何加速比这个查询的一些想法:如何加快此查询?
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'。它真的用于过滤记录吗? –
是的,我用过它。 –