zoukankan      html  css  js  c++  java
  • oracle总是使用索引的第一个列

    如果索引是建立在多个列上, 只有在它的第一个列(leading column)被where子句引用时,优化器才会选择使用该索引.

    译者按:

    这也是一条简单而重要的规则. 见以下实例.

    SQL> create table multiindexusage ( inda number , indb number , descr varchar2(10));

    Table created.

    SQL> create index multindex on multiindexusage(inda,indb);

    Index created.

    SQL> set autotrace traceonly

    SQL>  select * from  multiindexusage where inda = 1;

    Execution Plan

    ----------------------------------------------------------

       0      SELECT STATEMENT Optimizer=CHOOSE

       1    0   TABLE ACCESS (BY INDEX ROWID) OF 'MULTIINDEXUSAGE'

       2    1     INDEX (RANGE SCAN) OF 'MULTINDEX' (NON-UNIQUE)

    SQL> select * from  multiindexusage where indb = 1;

    Execution Plan

    ----------------------------------------------------------

       0      SELECT STATEMENT Optimizer=CHOOSE

       1    0   TABLE ACCESS (FULL) OF 'MULTIINDEXUSAGE'

      

    很明显, 当仅引用索引的第二个列时,优化器使用了全表扫描而忽略了索引

  • 相关阅读:
    ASP.NET常用代码.doc
    logo集合
    链接提示文字的实现
    详解css定位与定位应用
    在b/s开发中经常用到的javaScript技术整理
    上传图象,略缩
    ASP.NET中17种正则表达式
    生成静态页方式一
    转“C#实现web信息自动抓取”
    用来面试的代码
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11125237.html
Copyright © 2011-2022 走看看