【发布时间】:2012-04-21 21:07:00
【问题描述】:
我正在使用 SQL Server 2008 R2,我想在非唯一、可为空的字段上添加非聚集索引。为了避免访问我的聚集索引,我的索引还将包含一列:
CREATE INDEX IX_My_Index
ON MyTable (myBasicField)
INCLUDE (myIncludedField);
在myBasicField的实际数据中会有很多NULLs,我想知道是否有办法通过不扫描这些NULLs来提高性能,或者阻止存储NULL值在我的索引上。
提前致谢。
【问题讨论】:
-
我喜欢过滤后的索引答案。这只是另一回事。您可以将该数据放在具有 FK 关系的单独表中,然后完全消除空值(如果它为空,则 FK 表中没有行。)。如果两者都是聚集索引,则 PK 到 FK 连接非常快。
-
我想确认 Sql Server 确实在索引中包含 NULL(确实如此) - ms docs(来自 this answer)
标签: tsql indexing sql-server-2008-r2 nullable non-clustered-index