zoukankan      html  css  js  c++  java
  • oracle 初试 hint

    最近在研究oracle的视图问题,本来想全转成 物化视图(materialized view)的,这样可以极大提升系统的响应时间,无奈工作量太大,所以就研究了SQL优化的问题。

    我这个普通视图 有360行,其中还有left join 了多个别的视图,这些个视图也有300+行。

    所以在朋友指导下,尝试了一下HINT。

    步骤1 :

    查出这个视图的SQL_ID :

    select sql_id from v$sql where sql_text like '%你中间关键语句%'
    

    步骤2 :

    select * from table(dbms_xplan.display_cursor(sql_id => '12ynt5upntqm7',cursor_child_no => 0,format => 'advanced'));
    

    执行结果如下 :

    Outline Data
    -------------

    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------

    /*+
    BEGIN_OUTLINE_DATA
    IGNORE_OPTIM_EMBEDDED_HINTS
    OPTIMIZER_FEATURES_ENABLE('11.2.0.4')
    DB_VERSION('11.2.0.4')
    ALL_ROWS
    OUTLINE_LEAF(@"SEL$88122447")
    MERGE(@"SEL$641071AC")
    OUTLINE(@"SEL$1")
    OUTLINE(@"SEL$641071AC")

    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    MERGE(@"SEL$07BDC5B4")
    OUTLINE(@"SEL$2")
    OUTLINE(@"SEL$07BDC5B4")
    MERGE(@"SEL$4")
    OUTLINE(@"SEL$3")
    OUTLINE(@"SEL$4")
    FULL(@"SEL$88122447" "X$KGLCURSOR_CHILD"@"SEL$4")
    END_OUTLINE_DATA
    */

    Predicate Information (identified by operation id):

    把中间这一坨 放到之前视图对应SQL 的最前面,例如 :

    SELECT
    /*+
    BEGIN_OUTLINE_DATA
    IGNORE_OPTIM_EMBEDDED_HINTS
    OPTIMIZER_FEATURES_ENABLE('11.2.0.4')
    DB_VERSION('11.2.0.4')
    ALL_ROWS
    OUTLINE_LEAF(@"SEL$88122447")
    MERGE(@"SEL$641071AC")
    OUTLINE(@"SEL$1")
    OUTLINE(@"SEL$641071AC")
    MERGE(@"SEL$07BDC5B4")
    OUTLINE(@"SEL$2")
    OUTLINE(@"SEL$07BDC5B4")
    MERGE(@"SEL$4")
    OUTLINE(@"SEL$3")
    OUTLINE(@"SEL$4")
    FULL(@"SEL$88122447" "X$KGLCURSOR_CHILD"@"SEL$4")
    END_OUTLINE_DATA
    */
    DISTINCT part11.ccp from 啪啦啪啦啪啪啪

    速度从 1.9秒 提升到1秒。

    50%的提升,帅翻了~~~

    感谢 小枫 的大力帮助啊~~~~

  • 相关阅读:
    web性能优化
    5、Git:使用码云(Gitee)
    4、Git:文件操作
    3、Git:基本理论 和 项目搭建
    2、Git:环境配置
    1、Git:版本控制 和 Git历史
    18、各种锁的理解(非公平锁和公平锁、可重入锁、自旋锁、死锁)
    17、原子引用(乐观锁)
    16、深入理解CAS(重点)
    15、彻底玩转单例模式
  • 原文地址:https://www.cnblogs.com/woxiangbo/p/5355986.html
Copyright © 2011-2022 走看看