English 中文(简体)
a. 对Oracle 许多OR vs IN(......)[复制]的性能分析
原标题:SQL performance tuning for Oracle Many OR vs IN () [duplicate]

I dont have "explain plan" on hand. Could you help to tell which of the below is more efficient?

备选案文1:

select ... 
    from VIEW_ABC 
    where STRING_COL =  AA  
       OR STRING_COL =  BB  
       OR STRING_COL =  BB  
       OR ...
       OR STRING_COL =  ZZ 

Option 2:

select ... 
    from VIEW_ABC 
    where STRING_COL IN ( AA , BB ,..., ZZ )
问题回答

This is a similar question: IN vs OR of Oracle, which faster?

在查询OMG Ponies的答复时,他建议INOR更为优化。

There is also this question: IN vs OR in the SQL WHERE Clause

尽管数据库并非具体,但它从Oracle的角度得到一些很好的答案。

对于其价值而言,使用<代码>IN将非常容易阅读,因此从长远来看更容易得到支持。 单靠这样做,就能够回避你们的选择,特别是如果(我怀疑)甲骨质选择者以同样的方式对待他们。

然而,如果贵方的价值观清单非常庞大,那么你或许应当研究一种完全不同的方法,来总结你们的成果。

我假定最佳办法将处理这两种版本。

甲骨质素优化器将把国家清单转换为OR链。 这使你能够做OR-expansion transformation,以进一步优化你的询问。 此外, 它可以产生能够加快询问的中转站。

在两个查询、构造或转变中,一切都相等,因此在使用本国或欧洲复兴开发银行之间没有差别。 IN将转变为OR链。

The Optimizer will still use and index, if there exists one on the column String_Col. In order to maintain a decent size of the SQL to help parsing, so rather than have Oracle parse a 250-500 character string, you are better off, putting all possible values in a temp table or a pl/sql table and then join like this -

Select /*+ ordered use_nl(x) */ * from pl/sql_table, view_abc x where x.string_col = pl/sql_table.value





相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

Connecting to Oracle 10g with ODBC from Excel VBA

The following code works. the connection opens fine but recordset.recordCount always returns -1 when there is data in the table. ANd If I try to call any methods/properties on recordset it crashes ...

How to make a one to one left outer join?

I was wondering, is there a way to make a kind of one to one left outer join: I need a join that matches say table A with table B, for each record on table A it must search for its pair on table B, ...

Insert if not exists Oracle

I need to be able to run an Oracle query which goes to insert a number of rows, but it also checks to see if a primary key exists and if it does, then it skips that insert. Something like: INSERT ALL ...

How can I store NULLs in NOT NULL field?

I just came across NULL values in NOT-NULL fields in our test database. How could they get there? I know that NOT-NULL constraints can be altered with NOVALIDATE clause, but that would change table s ...

Type reference scope

I m studying databases and am currently working on a object-relational DB project and I ve encountered a small problem with the number of possible constraints in an object table. I m using "Database ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

热门标签