IS NOT NULL vs = 效率?

Posted

技术标签:

【中文标题】IS NOT NULL vs = 效率?【英文标题】:IS NOT NULL vs = efficiency? 【发布时间】:2014-05-08 13:22:09 【问题描述】:

在我的 Oracle DB 中 CLOSED_STATUS 是一个 Varchar2 列,它要么是 NULL 要么是“+”,除了这两个之外没有其他可能的值。

我想检索 CLOSED_STATUS = '+' 的所有行。

以下哪个 SQL 查询更高效和/或更快?

SELECT ID FROM DB_ADM.ISSUE WHERE (CLOSED_STATUS = '+')
SELECT ID FROM DB_ADM.ISSUE WHERE (CLOSED_STATUS IS NOT NULL)

【问题讨论】:

【参考方案1】:

视情况而定。

我的猜测是计划之间没有区别。您需要为这两个语句生成查询计划,以查看它们是否真的不同。如果它们不同,那么我们可以看看它们为什么不同以及哪个计划更有效。

【讨论】:

【参考方案2】:

这取决于 CLOSE_STATUS 是否被索引(以及表包含的数据)。

如果没有被索引,一个普通测试表上的执行计划说成本是一样的。

但是如果列被索引,使用CLOSED_STATUS = '+'如果比CLOSED_STATUS IS NOT NULL效率更高

【讨论】:

以上是关于IS NOT NULL vs = 效率?的主要内容,如果未能解决你的问题,请参考以下文章

IS-IS

IS-IS路由协议学习笔记

IS-IS协议总结

IS-IS 路由协议 总结

IS-IS路由协议 总结

IS-IS协议原理与配置