位列索引

时间:2011-08-06 02:41:10

标签: sql-server-2008 indexing

考虑一个带有位列的表,指示对象是处于活动状态还是非活动状态,其中大多数项目处于非活动状态(已关闭)。

我的理解是,由于此列(2)的不同值的数量有限,SQL引擎发现执行表扫描以查找打开的项而不是尝试索引位列更有效。

SQL 2008有一项新功能,允许对索引进行过滤。在不了解它的内部结构的情况下,我会假设索引只有在满足过滤条件时才包含对记录的引用,并且这种方法将提供一种有效的方法来检索所有活动记录,而不必诉诸于拆分活动记录到单独的表或分区中。

我曾经将开放记录记录的主键放入一个表中,用于标识活动记录,然后将主表连接到此“活动列表”表以仅返回活动记录。

在这种情况下,为什么使用过滤索引不合适是否有任何理由?

1 个答案:

答案 0 :(得分:3)

Active位字段上的过滤索引是有效选择。

  

您可能希望为其添加特定的UPDATE STATISTICS   特别是过滤的索引(特别是在易失性数据上)   用FULLSCAN更新他们的统计数据。好消息是他们是   可能是较小的索引(因此更容易/更便宜   要更新的统计数据)

这是因为更新统计信息阈值基于基础列而不是仅基于过滤的索引值。

Ref