【问题标题】:Index on a bit column位列上的索引
【发布时间】:2011-08-06 02:41:10
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: sql-server-2008 indexing


    【解决方案1】:

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

    您可能希望为 过滤索引(尤其是易失性数据) 使用 FULLSCAN 更新他们的统计数据。好消息是他们是 可能是较小的索引(因此更容易/成本更低 要更新的统计数据)

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

    Ref

    【讨论】:

      猜你喜欢
      • 2021-05-23
      • 2011-09-04
      • 2016-05-17
      • 2011-11-28
      • 2018-10-02
      • 1970-01-01
      • 2011-08-31
      • 2019-02-09
      • 1970-01-01
      相关资源
      最近更新 更多