小编Sea*_*ean的帖子

大型事实表和分区键的困境

我有相当大的事实表(20 亿条记录,大约 120 GB)。此表未分区,查询响应非常慢。我打算对表和索引进行分区。该表有一个标识列,它是主键并在其上有一个聚集索引。还有其他非聚集索引,但我不会在这里详细介绍。我试图分区的列不是主键的一部分,但不是空的,这给我带来了轻微的困境。我有两个选择。

  1. 我将此列添加为主键的一部分,即复合主键。由于第一列是标识,组合将始终是唯一的,这意味着我不必担心访问表的应用程序。聚集索引将自动分区对齐,其他索引也可以分区对齐。

  2. 秒选项是删除标识列上的聚集索引并使其唯一非聚集。该索引不能分区对齐,因为分区键不是它的一部分,因此必须位于一个驱动器上。然后在分区键列上创建一个聚集索引,该列可以分区对齐,因此所有其他非聚集索引。

我们的 DBA 支持第二种选择,因为他不想更改主键。我担心选项 2 中的性能下降,因为索引不是分区对齐的。

我将不胜感激任何反馈以及您在这种情况下会使用的任何其他方法。

clustered-index sql-server-2008-r2 partitioning nonclustered-index

5
推荐指数
1
解决办法
2162
查看次数