我正在使用SQL Server 2008 R2,我想在非唯一的可空字段上添加非聚集索引。我的索引还会包含一个列,以避免访问我的聚簇索引:
CREATE INDEX IX_My_Index
ON MyTable (myBasicField)
INCLUDE (myIncludedField);
在myBasicField
的实际数据中会有很多NULLs
,我想知道是否有一种方法可以通过不扫描这些NULLs
或阻止{来提高性能{1}}值存储在我的索引上。
提前致谢。
答案 0 :(得分:6)
使用SQL Server 2008及更高版本,您可以使用过滤索引。请参阅intro blog post here - 语法为:
CREATE INDEX IX_My_Index
ON MyTable (myBasicField)
INCLUDE (myIncludedField)
WHERE myBasicField IS NOT NULL;
任何包含相同WHERE
子句的查询都可以利用这一点,并且索引会小得多,因此如果排除这样的NULL值,性能会更好。
答案 1 :(得分:3)
您正在寻找过滤索引。参见: