我正在使用 SQL Server 2008 R2,我想在非唯一、可为空的字段上添加非聚集索引。我的索引还将包含一列,以避免访问我的聚集索引:
CREATE INDEX IX_My_Index
ON MyTable (myBasicField)
INCLUDE (myIncludedField);
在实际数据中myBasicField
会有很多,NULLs
我想知道是否有一种方法可以通过不扫描这些来提高性能NULLs
,或者阻止NULL
将值存储在我的索引上。
提前致谢。
我正在使用 SQL Server 2008 R2,我想在非唯一、可为空的字段上添加非聚集索引。我的索引还将包含一列,以避免访问我的聚集索引:
CREATE INDEX IX_My_Index
ON MyTable (myBasicField)
INCLUDE (myIncludedField);
在实际数据中myBasicField
会有很多,NULLs
我想知道是否有一种方法可以通过不扫描这些来提高性能NULLs
,或者阻止NULL
将值存储在我的索引上。
提前致谢。
对于 SQL Server 2008 及更高版本,您可以使用过滤索引。在此处查看介绍性博客文章- 语法为:
CREATE INDEX IX_My_Index
ON MyTable (myBasicField)
INCLUDE (myIncludedField)
WHERE myBasicField IS NOT NULL;
任何包含相同WHERE
子句的查询都可以利用这一点,并且如果您排除像这样的 NULL 值,索引会小很多,因此性能会更好。