我有以下查詢查詢優化中的迫切需要,但我不知道如何去優化它
SELECT
YEAR(N.TICKETDATE) AS TICKETYEAR,
MONTH(N.TICKETDATE) AS TICKETMONTH,
SUM(DISTINCT N.NETWEIGHTHAULED)/COUNT(DISTINCT N.NETWEIGHTHAULED) AS NETTONSHAULED ,
COUNT(N.TICKETID) AS TICKETCOUNT,
COUNT(DISTINCT N.TICKETID)/MAX(DATEDIFF(D,N.TICKETDATE,(DATEADD(M,1,N.TICKETDATE))))AS AVGPERDAY
FROM
AX2009_1_COPY.DBO.NAT_JOBLINE N
INNER JOIN AX2009_1_COPY.DBO.SALESLINE S
ON N.SALESID = S.SALESID
INNER JOIN AX2009_1_COPY.DBO.CUSTINVOICEJOUR J
ON N.SALESID = J.SALESID
WHERE
J.INVOICEID NOT LIKE 'CCR%' AND
N.TICKETID NOT LIKE 'DMTKT%'
GROUP BY
YEAR(N.TICKETDATE),
MONTH(N.TICKETDATE)
ORDER BY
YEAR(N.TICKETDATE),
MONTH(N.TICKETDATE)
它需要12分鐘來運行。我不太確定如何縮短查詢的時間。我知道這些連接可能會使用一些工作,但我很難找到真正有用的東西。你能幫我一下,給我一些指點或一個好的網站來找到答案嗎?
「可怕」 而不是 「戴爾」! – koan
你沒有說明你的表上是否有任何索引。這表明你不知道索引的重要性。那麼,你對錶格有什麼索引,以及數據量如何? –
感謝您的英語課:-) – Maximus