【问题标题】:IS NOT NULL vs = efficiency?IS NOT NULL vs = 效率?
【发布时间】: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)

【问题讨论】:

    标签: sql performance oracle11g


    【解决方案1】:

    视情况而定。

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-15
        • 1970-01-01
        • 2022-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多