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%的提升,帅翻了~~~

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

  • 相关阅读:
    进程和线程的概述
    注意两个词汇的区别:并行和并发
    WebRTC MCU( Multipoint Conferencing Unit)服务器调研
    (译)WebRTC实战: STUN, TURN, Signaling
    关于图数据库查询语言:Cypher
    Neo4j安装后的密码修改
    XYC2016上半年工作笔记整理
    WebRTC技术调研
    在Django中使用Neo4j
    传统企业做互联网的困局
  • 原文地址:https://www.cnblogs.com/woxiangbo/p/5355986.html
Copyright © 2011-2022 走看看