zaf*_*s.m 5 t-sql indexing nullable sql-server-2008-r2 non-clustered-index
我正在使用SQL Server 2008 R2,我想在非唯一的可空字段上添加非聚集索引.我的索引还会包含一个列,以避免访问我的聚簇索引:
CREATE INDEX IX_My_Index
ON MyTable (myBasicField)
INCLUDE (myIncludedField);
Run Code Online (Sandbox Code Playgroud)
在实际的数据中myBasicField
会有很多,NULLs
我想知道是否有一种方法可以通过不扫描这些来提高性能NULLs
,或者防止将NULL
值存储在我的索引上.
提前致谢.
使用SQL Server 2008及更高版本,您可以使用筛选索引.在这里查看介绍博客文章 - 语法将是:
CREATE INDEX IX_My_Index
ON MyTable (myBasicField)
INCLUDE (myIncludedField)
WHERE myBasicField IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
任何包含相同WHERE
子句的查询都可以利用这一点,并且索引将小得多,因此如果排除这样的NULL值,则性能会更好.