【问题标题】:Does an index speed the calculation of a DATEDIFF of two datetime values?索引是否可以加快计算两个日期时间值的 DATEDIFF?
【发布时间】:2014-03-14 05:50:41
【问题描述】:

我有一个三列的表:

id | start_date | end_date

我有一个显示idDATEDIFF(hour, start_date, end_date) 的视图:

id | timespan

在日期列上放置索引会加快查询速度吗?这只适用于DATEADD?如果是这样,为什么?我的理解是,对于这样的算术查询,TABLE SCAN 是必需的。

【问题讨论】:

  • 您想加快使用WHERE view_column = @constant_value 或类似视图定义中DATEDIFF(hour, start_date, end_date) AS view_column 的查询吗?我建议您添加视图定义、查询和 SQL-Server 的确切版本(2005、2008、2008R2、2012)
  • 听起来你可以自己测试一下。
  • @FreshPrinceOfSO 它是,但我无法找到明确说明这一点的来源
  • @Pheonixblade9 那说什么?你可以自己测试吗?
  • 这表示索引对这样的计算没有好处,因为它会引发表扫描,而不是查找。

标签: sql sql-server performance tsql sql-server-2012


【解决方案1】:

没有。它没有。

您可以创建计算列并在其上创建索引:

alter table <table> add duration as datediff(hour, start_date, end_date);

create index on <table>(duration);

当然,如果在where 子句、on 子句或order by 中使用duration,索引将最有用。

【讨论】:

  • 好的。我认为那个告诉我索引可以加快速度的人是个笨蛋。他问如何加快这个视图,我建议了一个计算栏。他说索引会更好。感谢您确认我的想法
  • @Pheonixblade9 您可能需要在被标记之前编辑您的语言评论。
猜你喜欢
  • 2022-08-15
  • 2013-11-10
  • 1970-01-01
  • 2019-09-23
  • 2010-09-17
  • 2021-10-09
  • 2019-06-09
  • 2020-05-15
相关资源
最近更新 更多