从日期函数 VS 日期维度查询性能 table

Query performance from date functions VS Date dimension table

我有一个 table Transactions,它有一个列存储索引并存储了 74445000 行。

我有如下查询

SELECT 
  CustomerNumber,
  MONTH(CreationDate) AS m,
  YEAR(CreationDate) AS y,
  CurrencyID AS c 
FROM Transactions

我正在考虑在包含所有日期的月份和年份的日期维度 table 上执行 JOIN 可能比上面使用 SQL 日期函数的查询更好。

任何人都可以验证这个假设 and/or 指向可以提供详细信息的资源吗?

对原始列的任何更改都会对查询性能产生影响。对于查询中的月份和年份的计算,您应该获得一个非常高效的批处理执行模式,这将使替代方案显得苍白无力。 另外,如果您的连接将在 integer/bigint 列上完成,那么您可能能够获得段消除,这应该会提高您的查询性能,但是与int 数据类型。 换句话说 - 不必要的头痛。

由于列存储索引尚不支持计算列 (SQL Server 2016),因此没有大的替代方案。