zoukankan      html  css  js  c++  java
  • oracle不明确的索引等级

    当ORACLE无法判断索引的等级高低差别,优化器将只使用一个索引,它就是在WHERE子句中被列在最前面的.

         举例:

         DEPTNO上有一个非唯一性索引,EMP_CAT也有一个非唯一性索引.

        

         SELECT ENAME

         FROM EMP

         WHERE DEPTNO > 20

         AND EMP_CAT > ‘A’;

         这里, ORACLE只用到了DEPT_NO索引. 执行路径如下:

        

         TABLE ACCESS BY ROWID ON EMP

              INDEX RANGE SCAN ON DEPT_IDX

    译者按:

    我们来试一下以下这种情况:

    SQL> select index_name, uniqueness from user_indexes where table_name = 'EMP';

    INDEX_NAME                     UNIQUENES

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

    EMPNO                          UNIQUE

    EMPTYPE                        NONUNIQUE

    SQL> select * from emp where empno >= 2 and emp_type = 'A' ;

    no rows selected

    Execution Plan

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

       0      SELECT STATEMENT Optimizer=CHOOSE

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

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

    虽然EMPNO是唯一性索引,但是由于它所做的是范围比较, 等级要比非唯一性索引的等式比较低!

  • 相关阅读:
    蓝桥杯--芯片测试
    蓝桥杯--FJ的字符串
    win8 js 没反应
    winform win8 js checkbox互动
    win8 GridView
    wcf服务引用无实体类对象
    arcgis 接口转换与.Net框架
    win8 链接
    分页控件
    Oracle 分页查询存储过程
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11124896.html
Copyright © 2011-2022 走看看