1

表分区的最大好处之一是,“可以在特定分区上重建索引”。SQL Server - 在特定分区上创建非聚簇索引

想象一下,有一个分区表(现在有12个分区),它具有聚簇和少数非聚集索引,所有分区对齐。

我想添加一个新的非聚集索引到表,而不必为旧分区构建。我只需要这个索引仅用于最后3个分区。

那么,如何为12分区表的最后3个分区创建一个新的非聚簇索引?

回答

1

这是不可能的。这会给参数化查询带来问题,因为查询规划器从来不会静态地知道可以使用索引(除非有一个常量表达式谓词)。

您可以使用`where partitionKey> = startOfSomePartition'创建过滤索引。不过,您的查询必须静态包含此谓词。

您可以尝试查看两个具有不同架构的分区表。虽然这不是很方便。

+0

+1 @usr我们在大事实表FK上使用过滤后的索引策略。它可以帮助我们将存储和维护成本降至最低。由于过滤器必须是静态的(不能像GETDATE()那样引用函数),我们通常每周都会删除并创建一次,并使用动态sql来构建新的索引谓词定义。此外,分区消除是获得索引使用的关键,但这是每次处理大分区表时都给定的。 – brian

+0

需要注意的一点:使用> =,<=, >,<的筛选索引很好地工作,除非您使用参数,即只有在where子句中使用文字而不是变量或参数时才起作用。 –

相关问题