在大量存儲過程中,我有以下條件語句。 25%的行有一個Visible = 1的標準,但其餘的不在Web應用程序中使用,只是它被處理的引用。向該列添加索引是否有好處?在布爾列上添加SQL Server索引對於性能
WHERE
ev.Visible = 1 AND
(@StartDate IS NULL OR @StartDate <= ev.StartDate)
在大量存儲過程中,我有以下條件語句。 25%的行有一個Visible = 1的標準,但其餘的不在Web應用程序中使用,只是它被處理的引用。向該列添加索引是否有好處?在布爾列上添加SQL Server索引對於性能
WHERE
ev.Visible = 1 AND
(@StartDate IS NULL OR @StartDate <= ev.StartDate)
可能的最佳做法是測試您的實際數據並確定您的發現。
25%的選擇性在大批量上不是很好。在你的數據上測試它來驗證。你可能會做其他類型的搜索,這將需要其他索引。
有幾種選擇,以更好地處理這種情況:
CREATE INDEX [IX_Post_Startdate] ON dbo.Posts(StartDate) WHERE VISIBLE = 1
。這將支持您基於startDate搜索的其他查詢。*「SQL Server將只使用單個索引」*此源代碼?每個查詢的每個表是 – Kermit
。它將在非聚簇索引中執行索引查找,然後在聚簇索引中查找。它不會使用額外的索引。將看看我能否找到一個來源。 –
對我來說不好的措辭,刪除了錯誤的陳述 –
這是你可以測試自己的東西。我們沒有你的數據集。你究竟在尋找什麼? – Kermit
林想知道如果不行,那麼我會試試看。 –
那麼你不想爲每個查詢添加索引。如果您發現查詢的性能不佳,經常使用它,它可能會從索引中受益,那麼我不明白爲什麼。 – Kermit