sql server语言 - 在“- case when -”比较日期时提高sql性能



我(继承)了一些看起来很糟糕的遗留TSQL代码(它可能非常好!),我希望提高它的性能。基本上,我有一个Case语句,里面有几个when,就像这样:

使用(例如)

(DateTime)ScheduledDate = '2012-04-16 10:00:00'

(DateTime)ActualDate = '2012-04-16 11:09:00'

WHEN DATEDIFF(dd, CC.ScheduledDate, 1) = DATEDIFF(dd, CC.ActualDate, 1) AND DATEDIFF(mi, CC.ScheduledDate, CC.ActualDate) <> 0 AND DATEDIFF(ss, DATEADD(dd, -DATEDIFF(dd, CC.ActualDate, 1), 1), CC.ActualDate) > 0 THEN CC.ActualDate

我已经尝试改变它,以实际比较日期而不是针对1(因为我认为运行一个DateDiff会比尝试比较2个DateDiff便宜),例如

WHEN DATEDIFF(dd, CC.ScheduledDate, CC.ActualDate) = 0 AND DATEDIFF(mi, CC.ScheduledDate, CC.ActualDate) <> 0 AND DATEDIFF(ss, DATEADD(dd, -DATEDIFF(dd, CC.ActualDate, 1), 1), CC.ActualDate) > 0 THEN CC.ActualDate

然而,使用SHOWPLAN_ALL似乎表明TotalSubtreeCost略微增加而不是减少。

我如何改进这样的语句,或者它已经尽可能高效了?

the case/when是select语句的一部分,该语句根据case/when比较返回scheduledate或ActualDate。

您可以编写一个用户定义的函数,将ScheduleDate和ActualDate作为参数并返回输出日期。

相关内容

  • 没有找到相关文章

最新更新