应该在哪里分区列在SQL Server上的主键去?(Where should the partiti

2019-10-20 10:12发布

使用SQL Server 2005和2008。

我有一个潜在的非常大的表(潜在数亿行)由下列列:

CREATE TABLE (
    date SMALLDATETIME,
    id BIGINT,
    value FLOAT
)

它正在对列进行了分区date在日常的分区。 接下来的问题是,如果主键是在date, idvalue, id

我可以想像,SQL Server是足够聪明,知道它已经分区上date ,因此,如果我总是查询天的全块,然后我可以在第二次主键拥有它。 或者,我可以想像,SQL Server将需要该列是先在主键来获得分区的好处。

任何人都可以借一些洞察到其中的方式表应键入?

Answer 1:

由于是标准的做法,主键应该是唯一标识一个给定行的候选键。

你想要做的事情,被称为对齐分区,这将确保主键也被你的分区键拆分并存储在相应的表数据。 这是SQL Server的默认行为。

有关详情,请参考SQL Server 2005中分区表和索引



Answer 2:

有没有具体的需要分区键是在分区表的任何索引的第一个字段,只要它出现,然后可以对齐分区计划指标之内。

考虑到这一点,你应该申请的索引字段顺序的正常规则支持的查询次数最多的值/选择性。



文章来源: Where should the partitioning column go in the primary key on SQL Server?