我有这个查询需要花费很多时间。请帮我优化这个查询。
select *
from t_Packages
where PackageTypeID = 4
and dateadd(day, 60 + ctstracker.dbo.fn_getNonBankHolidaysCount(receiveddatetime, dateadd(day, 60, receiveddatetime)), receiveddatetime) >= GETDATE()
答案 0 :(得分:0)
正如您所确定的那样,在您执行where子句时调用函数会导致性能下降。本质上,db没有选项,只能为表中的每一行计算该函数,以查看该谓词的计算结果是否为true。一般概念被称为" SARGability" (" SARG"缩短"搜索参数")。