Where子句中的函数导致查询优化问题



我继承了一个存储过程,我正试图让它更高效地运行。程序的一部分有以下片段:

select distinct t.claimid, max(rtwid)
from wkabrtw t
join #appealpendingdetails a on a.claimid = t.claimid
where convert(smalldatetime,t.statdt) <= a.appealrecddt
group by t.claimid

我知道一个问题是Where子句中的Convert()函数。有人知道在不使用Where子句中的函数的情况下写这行的另一种方法吗?t.statdt值是一个日期时间。

带有Convert函数的where子句没有性能改进。

例如列检索,sql server会将您的数据强制转换为"新"数据,然后使用它进行比较。最好不用转换任何东西。尽可能以更兼容的方式存储数据。总之,sql语句很快,转换函数的编译速度也很快。如果您选择每次打开Cursor以获取行、强制转换/转换,然后进行比较,则会出现性能问题。

最新更新