【问题标题】:Alternative writing Select query Oracle替代写作选择查询Oracle
【发布时间】:2020-06-29 13:26:03
【问题描述】:

我有以下select 查询我使用OR 条件来分隔两个条件。如您所见,我正在检查字段EXORID 两次,如果它有值或者是null。但我在想有没有其他方法可以同时结合这两个条件,比如(EXORID = '2100' OR null)

    select * from ORD_TEST where (OID = '2100' and EXORID = '21096006')
    or (OID = '2100' and EXORID is null)

【问题讨论】:

    标签: sql oracle select


    【解决方案1】:

    你可以重新排列逻辑:

    where OID = '2100' and (EXORID = '21096006' or EXORID is null)
    

    【讨论】:

    • 只是想知道这里的性能有什么问题吗?因为我提到的查询运行良好,没有性能问题,我在 EXORID 和 OID 上定义了非唯一索引,我的表有 80k 行
    • @Symonds 。 . .一点也不。一些数据库可能更容易优化这种形式。 Oracle 有一个很好的优化器,所以它不应该有所作为。好 。 . .嗯。 . .如果您在(EXORID, OID) 而不是(OID, EXORID) 上有索引,我可以看到一个可能的问题。但即使在那种情况下,我认为 Oracle 也可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2011-03-09
    • 2013-01-19
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多