是否有可能在DateTime
零件上有索引,如DATEPART(YEAR, bp.[CreatedOn])
和DATEPART(MONTH, bp.[CreatedOn])
?例如,我有以下的T-SQL查詢:日期時間零件的SQL Server索引,如YEAR,MONTH
DECLARE @year AS INT = 2012;
DECLARE @month AS INT = 8;
SELECT bp.Title, bp.CreatedOn FROM BlogPosts bp
WHERE (DATEPART(YEAR, bp.[CreatedOn]) = @year) AND (DATEPART(MONTH, bp.[CreatedOn]) = @month)
ORDER BY bp.CreatedOn;
這是執行計劃,我有:https://gist.github.com/3551450
目前,不會有太多的記錄,所以它不是一個大問題來講perf,但是記錄會隨着時間而增長。
嗯,好主意!謝謝。那麼,在DateTime部件上創建索引是不可能的? – tugberk
@tugberk它可能會,如果你使用持久化計算列和索引它。 –
-1。這必須在所有記錄上運行'dateadd',因此必須加載所有記錄(FULL TABLE SCAN) - 性能非常差。我敢打賭你會在執行計劃中看到這一點。 – Aliostad