我在重型存储过程中有一个条件语句。 25%的行具有Visible = 1条件,但其余行没有,也没有在Web应用程序中使用,只是它被处理的引用。向该列添加索引是否有益?
WHERE
ev.Visible = 1 AND
(@StartDate IS NULL OR @StartDate <= ev.StartDate)
答案 0 :(得分:3)
最佳做法是测试您的实际数据并确定您的发现。
对于较大的体积,25%的选择性不是很好。对您的数据进行测试以验证。您可能正在进行其他需要其他索引的搜索。
有几种方法可以更好地处理这种情况:
CREATE INDEX [IX_Post_Startdate] ON dbo.Posts(StartDate) WHERE VISIBLE = 1
。这将为您基于startDate搜索的其他查询提供支持。