zoukankan      html  css  js  c++  java
  • oracle强制索引失效

    如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) .

    举例:

      

    SELECT ENAME

    FROM EMP

    WHERE EMPNO = 7935 

    AND DEPTNO + 0 = 10    /*DEPTNO上的索引将失效*/

    AND EMP_TYPE || ‘’ = ‘A’  /*EMP_TYPE上的索引将失效*/

    这是一种相当直接的提高查询效率的办法. 但是你必须谨慎考虑这种策略,一般来说,只有在你希望单独优化几个SQL时才能采用它.

    这里有一个例子关于何时采用这种策略,

    假设在EMP表的EMP_TYPE列上有一个非唯一性的索引而EMP_CLASS上没有索引.

    SELECT ENAME

    FROM EMP

    WHERE EMP_TYPE = ‘A’

    AND EMP_CLASS = ‘X’;

    优化器会注意到EMP_TYPE上的索引并使用它. 这是目前唯一的选择. 如果,一段时间以后, 另一个非唯一性建立在EMP_CLASS上,优化器必须对两个索引进行选择,在通常情况下,优化器将使用两个索引并在他们的结果集合上执行排序及合并. 然而,如果其中一个索引(EMP_TYPE)接近于唯一性而另一个索引(EMP_CLASS)上有几千个重复的值. 排序及合并就会成为一种不必要的负担. 在这种情况下,你希望使优化器屏蔽掉EMP_CLASS索引.

    用下面的方案就可以解决问题.

    SELECT ENAME

    FROM EMP

    WHERE EMP_TYPE = ‘A’

    AND EMP_CLASS||’’ = ‘X’;

  • 相关阅读:
    Odoo中的Widget
    Odoo中的domain
    Odoo中的模型详解
    Odoo中的模型继承、视图继承、Qweb模板继承详解
    Odoo权限控制详解
    Odoo字段类型详解
    WSGI——python web 服务器网关接口
    Backbone——数据驱动UI的js开发模式
    Underscore——JS函数库
    Werkzeug——python web开发工具包
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11124968.html
Copyright © 2011-2022 走看看