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 = 效率?的主要内容,如果未能解决你的问题,请参考以下文章