Sql server 在分区表上设置集群主键的更好方法?

Sql server 在分区表上设置集群主键的更好方法?,sql-server,sql-server-2008,database-partitioning,Sql Server,Sql Server 2008,Database Partitioning,我有下表 create table T (K1 date, K2 int, K3 varchar(10), C1 int, C2....) 表将按K1进行分区(K1的选择性较低。数据将按K1的顺序追加)。以下哪个主键是首选的 alter table T add primary key (K1, K2, K3) alter table T add primary key (K2, K3, K1) 看一看,然后: 无论某个特定字段是否是分区字段,您都应该从选择性最高的字段转到选择性最低的字段,只

我有下表

create table T (K1 date, K2 int, K3 varchar(10), C1 int, C2....)
表将按K1进行分区(K1的选择性较低。数据将按
K1
的顺序追加)。以下哪个主键是首选的

alter table T add primary key (K1, K2, K3)
alter table T add primary key (K2, K3, K1)
看一看,然后:


无论某个特定字段是否是分区字段,您都应该从选择性最高的字段转到选择性最低的字段,只要分区字段在索引中,以便使索引与分区对齐。

您需要提供有关
K2
K3
中数据的更多信息。每个变量有多大?我可以去掉问题中的k3。基本上,我是在问如何设计分区表的pk。集群主键应该比索引更重要吗?您应该几乎总是尽可能地设置最佳pk(按照从最高选择性到最低选择性的顺序唯一标识字段行的最少数据量),如果需要的话(SSMS中的显示执行计划通常会告诉您),您可能还需要添加其他索引,因此PK应该首先考虑,但不一定需要更多考虑。