我已经读过在WHERE子句中有一个函数会减慢速度(不是SARGABLE)。我现在面对这种情况,像这样的查询...
在下面的查询中,Fn是一个内置的CRM Dynamics DateTime函数,用于将UTCTime转换为LocalTime
SELECT
Column1,
Column2,
Column3,
Column4,
Fn(UTCTimeColumn) AS LocalTimeColumn
FROM
SomeTable
WHERE
Fn(UTCTimeColumn) between '2 Jan 2015 00:00:00.000' and '8 Jan 2015 23:59:59.000'
也尝试了这个......
SELECT
*
FROM(
SELECT
Column1,
Column2,
Column3,
Column4,
Fn(UTCTimeColumn) AS LocalTimeColumn
FROM
SomeTable) T
WHERE
T.LocalTimeColumn between '2 Jan 2015 00:00:00.000' and '8 Jan 2015 23:59:59.000'
在WHERE子句中使用这样的函数会使事物爬行。
答案 0 :(得分:2)
您可以添加一个持久化列,该列将调用该函数一次:
add column LocalTimeColumn as Fn(UTCTimeColumn) persisted