SQL Server索引是否在非聚集的非唯一索引中为空值?

时间:2013-12-19 16:47:25

标签: sql-server-2008 indexing

我正在考虑向数据库表添加一个列,并且对于大多数行,该列可能为null但是我希望能够在该列上查询特定的非空值。因此,索引将有助于检索时间,但是如果包含空值会破坏我的索引的选择性。

我已经做了一些阅读,我得到的印象是,当涉及到NULL值和索引时,SQL Server不一定遵守标准,但我在文档中找不到关于该主题的明确声明({{3} },Index Design BasicsNonclustered Index Structures)。我也找不到关于这个特定主题的问题。

非常感谢任何输入(特别是文档参考)!

注意我正在使用SQL Server 2008但是如果在'05到'12之间有相关的变化,我有兴趣听到这个。

1 个答案:

答案 0 :(得分:14)

我建议使用过滤索引,例如WHERE column IS NOT NULL; - 这将允许您创建仅困扰索引非NULL值的索引,并忽略所有没有值的行。您可能希望确保索引涵盖了您希望使用此类谓词运行的查询,这样您就不必返回整个表来查找查询需要输出的其他列(或使用在连接中,或以其他方式过滤等)。

More details here