更好的一个全局索引或两个更多指定的索引

时间:2017-04-11 14:45:14

标签: sql-server indexing

我的交易表包含以下字段

OID int
StartDate DateTime
Source int FK
TransactionType int
ArchivedDate DateTime (nullable)

有两种交易类型:

Regular(ArchivedDate为null且TransactionType = 1)或Archived(ArchivedDate不为null且TransactionType = 2)。

为了使我们的常规事务唯一,StartDate上有一个过滤索引,而TransactionType = 1过滤了源。

我们还希望根据StartDate,Source和ArchivedDate使我们的存档交易成为唯一。

我愿意

  • 替换当前索引删除过滤器并包含 StartDate,Source和ArchivedDate
  • 或者在StartDate,Source,ArchivedDate上创建新的筛选索引     使用TransactionType = 2
  • 过滤

最后一个精度:事务偶尔会被存档,因此TransactionType = 2的记录表示不到总记录的10%。

1 个答案:

答案 0 :(得分:0)

我会将它们作为两个单独的过滤索引/约束来完成。随着存档事务的相对量不断增加,为常规事务保留单独的筛选索引将继续提供良好的性能。维护额外存档索引的成本应该非常低,因为存档状态意味着这些记录没有活动。