Answers:
一点也不。
最常见的分区方案之一是使用日期字段,该日期字段与PK完全无关。
例如,如果您有一个Orders
包含字段的表,则OrderDate
很可能根据的月份和年份进行分区OrderDate
。
当记录过期且不再相关时,您可以将这些分区移至存档表或数据库,以便不再对其进行处理。
分区几乎可以在任何字段中使用,但是为了使其正常工作,您要分区的字段应该用于大多数(如果不是全部)查询中。如果您不包括分区键,那么本质上您将获得跨多个表(分区)的昂贵的表扫描。
编辑
对于第二部分,我认为答案也不是。分区键用于确定将行放入哪个分区,但我认为不维护索引。虽然在后端可能有统计数据。
除了JNK的答案外,您可能还应该阅读本文,该文章讨论了对齐表分区和索引分区。
在很多情况下,分区方案确实紧跟主键的第一列-例如,在数据仓库场景中,事实表的快照日期通常是分区列以及主键中的第一列。
但是同样地,在PK是IDENTITY或其他代理密钥的OLTP环境中,将其用于分区几乎没有意义,因为按任意数字进行分区通常不是非常有用。在OLTP系统中,您也倾向于按日期划分最多的分区(可能不在PK中),但也有可能按区域划分或按某种组织划分(如果您不使用代理,则可能在PK中划分)。
但这不是必需的。
如果不是主键本身的一部分,它必须是候选键的一部分。想法是,您的分区应与主键对齐。
因此,答案是肯定的,它是PK的一部分。如果不是另一个密钥,那么它同样足以成为PK。
OrderDate
。您有什么要支持您的主张的吗?
Partition columns for a unique index must be a subset of the index key.