我已經從這個網站獲益很長一段時間了。這是我在網站上的第一個問題。這是關於性能調整報告查詢。在這裏。 1.調整Select語句以獲得更快的結果
SELECT Count(b1.primkey)
from tableA b1 --WITH (NOLOCK)
join tableA b2 --WITH (NOLOCK)
on b1.email = b2.email
and DateDiff(day, b2.BookedDate , b1.BookedDate) > 1
tableA有大約700萬行。電子郵件是varchar(100)
字段。 Bookeddate是一個日期時間字段。 primkey是一個int的主鍵列。
我寫這個查詢的目的是爲了找出具有相同電子郵件ID的計數條目,但遲到一天。此查詢大約需要45分鐘才能運行。我真的想減少執行所需的時間。
由於這是報告,我妄圖使用--WITH (NOLOCK)
選項來提高閱讀時間。我在tableA上有一個列存儲索引,我知道它正在被SQL優化器使用 - 可以在執行計劃中看到。我正在使用SQL Server 2012.
- 有人可以告訴我,在這種情況下,會更好嗎?在電子郵件上使用非聚簇索引或在tableA上使用非聚簇列索引?
請幫幫我。
請發佈執行計劃。如果您還無法在此處上傳圖片,則可以在外部託管它。或者將.sqlplan文件上傳到某處。有多少個不同的電子郵件地址?考慮一下:如果2013-01-01日期的某個電子郵件有10條記錄,2013-01-02日期的同一電子郵件有10條記錄,那麼這將記錄爲100(而不是10)。你知道嗎? – usr