ISNULL 如何影响查询性能

Posted

技术标签:

【中文标题】ISNULL 如何影响查询性能【英文标题】:How ISNULL can affect query performance 【发布时间】:2018-01-16 09:50:53 【问题描述】:

我有一个查询(它是更大的复杂查询的一部分)SELECT ISNULL(dbo.Event.Sap_Equipment_ID,0) FROM dbo.Event

当我尝试执行它时,没有答案,它一直在运行。 但是当我删除 ISNULL() 时,它完成得非常快。

Sap_Equipment_ID 列是: 类型:大整数 长度:19 非空:假

可能的原因是什么?

【问题讨论】:

Id 列上有索引吗?这有助于解释为什么不使用该功能会快得多 在更大的查询中 this 的上下文是什么?执行计划是什么样的? 这是过滤某些IDS的条件。我不确定,我可以分享整个查询 - 抱歉。 【参考方案1】:

很可能(特别是因为该字段以_ID 结尾),该字段已编入索引。

对索引字段使用任何操作会使索引无法用于查询。这可能就是所需时间增加的原因。

【讨论】:

以上是关于ISNULL 如何影响查询性能的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 查询语法:如何在 $in 中使用 $isNull (pymongo api)

此查询中 IsNull 的用途是啥?

如何提高 SSMS 中的 SQL 查询执行时间?

7.where_如何处理NULL_isnull()

LINQ 中的 SQL ISNULL 等价物?

Django 查询 __isnull=True 或 = 无