我希望这个问题很简单,我目前正在将一些脚本继承到我的项目中,由数据库管理员审查。显然以前从未这样做过,并且发现了很多问题。
我对此有点陌生,但我对 Sargable 和 Non-Sargable SQL 的理解是,违规函数正在列上运行,从而阻碍索引(假设存在索引),从而导致扫描列和性能受到打击。代码在输入中有几个函数,很多次要的东西,比如
Where a.date between 'inputdate' and dateadd(day,1,'inputdate')
Run Code Online (Sandbox Code Playgroud)
DBA 采取的立场是,任何在WHERE子句中包含函数的查询都是不可复制的。我将放弃与他的问题,因为除了生气的管理员和我的访问受限之外,争论会让我无处可去。
但是为了知识起见,是否存在他是正确的并且WHERE从句中出现的任何功能都是问题的情况,无论功能或位置如何?