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

时间:2016-07-05 08:04:26

标签: sql-server columnstore

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

我有一个如下的查询

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

我正在考虑可能在Date Dimension表上进行JOIN,其中包含所有日期的月份和年份可能比使用SQL日期函数的上述查询更好。

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

1 个答案:

答案 0 :(得分:1)

原始列的任何更改都会对查询性能产生影响。用于计算月份和时间在您的查询中,您应该获得一个非常有效的批处理执行模式,这将使备选方案看起来很苍白。 另外,如果您的连接将在整数/ bigint列上完成,那么您可能能够获得可以提高查询性能的段消除,但是对于任何字符串列,将使查询持续与int相比难以置信的时间量数据类型。 换句话说 - 不必要的头痛。

由于Columnstore Indexes尚不支持计算列(SQL Server 2016),因此没有其他重大选择。