假设我有一个包含 10 亿行的股票定价表。我需要能够与大量客户端保持一致性、高速读写。
我想要的是一个将表分成两部分的分区。一个“归档分区”,它有一个聚簇索引并且有较旧的(按时间)90% 的数据。我还想要一个包含最近 10% 非聚集索引的“最近分区”。
我不确定这是否可能。
我的问题是:是否可以在 SQL Server 2016 中使用不同分区上的聚集索引和非聚集索引进行分区?
假设我有一个包含 10 亿行的股票定价表。我需要能够与大量客户端保持一致性、高速读写。
我想要的是一个将表分成两部分的分区。一个“归档分区”,它有一个聚簇索引并且有较旧的(按时间)90% 的数据。我还想要一个包含最近 10% 非聚集索引的“最近分区”。
我不确定这是否可能。
我的问题是:是否可以在 SQL Server 2016 中使用不同分区上的聚集索引和非聚集索引进行分区?
我不认为这是可能的。面对我们所知道的关于分区和聚簇索引的一切,这个概念似乎是错误的,但我可能是错的。
一种可能性是对两个表的分区视图,一个具有聚集索引,一个作为堆。我为此包含了一个演示脚本,但它确实有一些可能很关键的限制:
总的来说,您的情况可能足够复杂,需要进行更深思熟虑的分析。
在您的情况下可能更有价值的第二个选项是过滤索引,您可以将其添加到表的旧部分并包含大量列,以便它涵盖您在表的旧部分上执行的查询(这将有助于加快读取表的旧部分,但不会减慢最近部分的写入速度)。