ISNULL减慢了查询速度

duc*_*ike 6 sql-server-2008

我们有一个表为NULL或"Accepted"作为值.我的查询返回大约250行.

如果我添加一个where条件 -

AND Description = 'Accepted'
Run Code Online (Sandbox Code Playgroud)

我的250行在2秒内返回.

但是,如果我添加一个where条件 -

ISNULL(Description, '') = 'Accepted'
Run Code Online (Sandbox Code Playgroud)

我的250行在47秒内返回.

有没有人遇到使用ISNULL功能的性能问题?不幸的是,我在程序上仅限于此时必须使用ISNULL.

Rob*_*len 12

在函数内部包含字段时,它会更改优化程序的运行方式并强制它忽略索引.

看到这里:什么使SQL语句可以sargable?


JNK*_*JNK 8

您还可以使用以下方法完全绕过这些功能:

WHERE (Description = 'Accepted' OR Description IS NULL)