【发布时间】:2020-05-04 12:20:46
【问题描述】:
我有一个沿PeriodDate 列分区的事实表。
CREATE TABLE MyFactTable
(
PeriodDate DATE,
OrderID INT
CONSTRAINT MyFk FOREIGN KEY (OrderID) REFERENCES DimOrder(ID)
)
我想在 OrderID 列上创建一个分区对齐索引,据我从 BOL 了解,我需要包含分区键 (PeriodDate) 才能拥有索引对齐。
像这样:
CREATE NONCLUSTERED INDEX MyAlignedOrderIdIndex
ON MyFactTable (OrderID, PeriodDate);
我的问题是:我应该以什么顺序将两列放在上面的索引中?
ON MyFactTable (OrderID, PeriodDate);
或
ON MyFactTable (PeriodDate, OrderID);
正如我在 BOL 中所读到的,复合索引中的顺序也很重要,我的查询通常会使用 OrderID 来查找 Dim 表数据。
第一个OrderID, PeriodDate 顺序似乎是合乎逻辑的选择,但由于我不熟悉分区,我不知道当表有数百万行时它会如何“喜欢它”。
最佳实践在这里规定了什么?
【问题讨论】:
标签: sql-server indexing sql-server-2017 table-partitioning