表分区列选择

时间:2019-02-14 17:19:12

标签: sql-server tsql

我们有一个要划分的发票模型。作为一个基本示例,它包括:

表格:发票标题

列:HeaderId INT IDENTITY(1,1)已编组的唯一主键

列:InvoiceDate DATETIME

列:MemberId INT聚集索引

列:SupplierId

表格:发票行

列:LineId INT IDENTITY(1,1)已编组的唯一主键

列:HeaderId INT聚集索引(对InvoiceHeads的外键约束)

对InvoiceHeads表进行分区很简单,我们可以在InvoiceDate上完成,但是通常在表中通过HeaderID列将这些表联接在一起。

这是否意味着分区在两个方面都尽可能有效,我们应该对HeaderId上的InvoiceLines进行分区,使其范围与父级InvoiceHeads的分区方式最接近,即

1-100000(大约是2017年的发票日期) 1000001-200000(大致发票日期为2018年) 200000+(大约是当前年份)

如果这是正确的方法,那么我们将不得不每年维护分区以更改范围,以为刚刚过去的一年创建一个新分区。

如果我们同时启用自动创建增量统计信息和自动更新统计信息,那么我的印象也很深刻,触发自动更新的20%更改将特定于每个分区中的卷,因此将有更多机会保留我们的尽可能地更新当前年份的统计信息,而不必对以前的年份数据进行完全扫描。

0 个答案:

没有答案