在外键列上创建对齐索引
Create aligned index on a foreign key column
我有一个事实 table,它沿着 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 table 数据。
第一个 OrderID, PeriodDate
顺序似乎是合乎逻辑的选择,但由于我不熟悉分区,所以我不知道当 table 有数百万行时它将如何 "like it" 。
这里的最佳做法是什么?
My question is: In what order should I put the two columns in the index above?:
(OrderID,PeriodDate) 该索引用于检索给定的一组 OrderID 的所有事实,如果您的分区中有多个 PeriodDate,则首先使用 PeriodDate 的索引不会像有帮助。
这里的一般经验法则是不要按前导列进行分区。这样您就可以将分区消除和索引顺序作为完全独立的访问路径。
My dimension will have a dozen or maximum a hundred rows. The fact table will have millions of rows. Does it worth to create this index?
您必须进行测试。这真的取决于查询。但是,如果您的事实 table 是一个聚集的 columnstore(具有数百万行的事实 table 通常应该是),您可能会发现索引在查询中使用不多工作量。即它可能用于查询单个产品,但不适用于按非关键产品属性过滤的查询。
我有一个事实 table,它沿着 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 table 数据。
第一个 OrderID, PeriodDate
顺序似乎是合乎逻辑的选择,但由于我不熟悉分区,所以我不知道当 table 有数百万行时它将如何 "like it" 。
这里的最佳做法是什么?
My question is: In what order should I put the two columns in the index above?:
(OrderID,PeriodDate) 该索引用于检索给定的一组 OrderID 的所有事实,如果您的分区中有多个 PeriodDate,则首先使用 PeriodDate 的索引不会像有帮助。
这里的一般经验法则是不要按前导列进行分区。这样您就可以将分区消除和索引顺序作为完全独立的访问路径。
My dimension will have a dozen or maximum a hundred rows. The fact table will have millions of rows. Does it worth to create this index?
您必须进行测试。这真的取决于查询。但是,如果您的事实 table 是一个聚集的 columnstore(具有数百万行的事实 table 通常应该是),您可能会发现索引在查询中使用不多工作量。即它可能用于查询单个产品,但不适用于按非关键产品属性过滤的查询。