从日期函数 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),因此没有大的替代方案。
我有一个 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),因此没有大的替代方案。