Oracle的SQL性能调优很多OR vs IN()

m12*_*45y 5 sql oracle performance

我手边没有"解释计划".你能帮忙说出以下哪项更有效率吗?

选项1:

select ... 
    from VIEW_ABC 
    where STRING_COL = 'AA' 
       OR STRING_COL = 'BB' 
       OR STRING_COL = 'BB' 
       OR ...
       OR STRING_COL = 'ZZ'
Run Code Online (Sandbox Code Playgroud)

选项2:

select ... 
    from VIEW_ABC 
    where STRING_COL IN ('AA','BB',...,'ZZ')
Run Code Online (Sandbox Code Playgroud)

Oll*_*lie 6

这是一个类似的问题: Oracle的OR vs OR,哪个更快?

看看OMG小马给出的答案,他认为这个IN更优化了OR.

还有这个问题: SQL WHERE子句中的IN vs OR

虽然它不是特定于数据库的,但从Oracle的角度来看,它有一些很好的答案.

对于它的价值,使用IN将更容易阅读,因此从长远来看更容易支持.仅这一点可能会影响您的选择,特别是如果(我怀疑)Oracle优化器以同样的方式对待它们.

但是,如果您的值列表非常大,那么您应该查看一种完全不同的方法来检索结果.


Joe*_*lli 2

我假设优化器会将两个版本视为相同。IN实际上只是多个OR语句的语法简写。