【发布时间】:2015-10-05 14:40:25
【问题描述】:
一位同事向我展示了一个查询,他在同时使用 DATEADD 和 CAST 时遇到了一些严重的性能问题。通过切换顺序,他获得了更好的性能。为什么订单对性能如此重要?
这个 where 子句运行良好:
WHERE IHist.[DateTime] BETWEEN DATEADD(DD, -30,CAST(GETUTCDATE() AS Date)) AND DATEADD(DD, 1, CAST(GETUTCDATE() AS Date))
这个 where 子句永远存在:
WHERE IHist.[DateTime] BETWEEN CAST(DATEADD(DD, -30,GETUTCDATE()) AS DATE) AND CAST(DATEADD(DD, 1, GETUTCDATE()) AS DATE)
【问题讨论】:
-
您只能猜测。请发布执行计划:) 我怀疑它运行缓慢时没有使用索引。可能 SQL Server 估计不好,不得不把数据存到 tempdb...
标签: sql-server casting query-performance dateadd