<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    關于SQL的執行計劃。

    C、語句級別
    這些需要用到Hint,比如:
    SQL> SELECT /*+ RULE */ a.userid,
    2 b.name,
    3 b.depart_name
    4 FROM tf_f_yhda a,
    5 tf_f_depart b
    6 WHERE a.userid=b.userid;

    4、為什么有時一個表的某個字段明明有索引,當觀察一些語的執行計劃確不走索引呢?如何解決呢 ?

    A、不走索引大體有以下幾個原因
    ♀你在Instance級別所用的是all_rows的方式
    ♀你的表的統計信息(最可能的原因)
    ♀你的表很小,上文提到過的,Oracle的優化器認為不值得走索引。

    B、解決方法
    ♀可以修改init<SID>.ora中的OPTIMIZER_MODE這個參數,把它改為Rule或Choose,重起數據庫。也可以使用4中所提的Hint.
    ♀刪除統計信息
    SQL>analyze table table_name delete statistics;
    ♀表小不走索引是對的,不用調的。

    5、其它相關

    A、如何看一個表或索引是否是統計信息

    SQL>SELECT * FROM user_tables
    2 WHERE table_name=<table_name>
    3 AND num_rows is not null;
    SQL>SELECT * FROM user_indexes
    2 WHERE table_name=<table_name>
    3 AND num_rows is not null;

    b、如果我們先用CBO的方式,我們應及時去更新表和索引的統計信息,以免生形不切合實的執行計劃。

    SQL> ANALYZE TABLE table_name COMPUTE STATISTICS;
    SQL> ANALYZE INDEX index_name ESTIMATE STATISTICS;

    具體的ANALYZE語句請參照Oracle8i/9i 的refrence文檔。
    <================end of file“Oracle的優化器(Optimizer)”=====================>


    下面的是我的關于一點執行計劃的理解:

    1。首先要啟動trace的選項:
    set autotrace trace eXPlain
    如果出現下面的錯誤:

    SQL>? set autotrace trace explain
    SP2-0613: Unable to verify PLAN_TABLE format or existence
    SP2-0611: Error enabling EXPLAIN report

    那么要先運行下面的語句:
    ?@?/rdbms/admin/utlxplan.sql;

    2。分析下面的執行計劃:

    SQL> select ename,dname??? from emp, dept?? where emp.deptno=dept.deptno???? and dept.dname in ('ACCOUNTING','RESEARCH','SALES','OPERATIONS');

    Execution Plan
    ----------------------------------------------------------
    ?? 0????? SELECT STATEMENT Optimizer=CHOOSE
    ?? 1??? 0?? NESTED LOOPS
    ?? 2??? 1???? TABLE Access (FULL) OF 'EMP'
    ?? 3??? 1???? TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'
    ?? 4??? 3?????? INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)

    關于前面的兩個數字,第一個是狀態ID,第二個是父ID。
    就是如下所示:0-->1-->2
    ??? ?? ?? ?? ?? ?? ?????
    ??? ?? ?? ?? ?? ?? ?? ?? -->3-->4
    在上圖里,0的執行依靠1,1的執行又依賴2和3,2是沒有子ID的,所以2最先執行,然后是4,在然后是3;然后2和3的結果傳回1。
    在這個里面0行有個字“Optimizer=CHOOSE”,這個就是上文說的那個oracle的優化器了。
    還有,看這個“ INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)”,就知道這個語句運行的時候是走INDEX的。

    posted on 2008-04-08 23:19 金家寶 閱讀(209) 評論(0)  編輯  收藏 所屬分類: oracle

    主站蜘蛛池模板: 国内精品免费在线观看| 黄网站色视频免费观看45分钟| a视频免费在线观看| 亚洲色欲久久久久综合网| 亚洲精品无码专区| 亚洲国产成人久久精品软件| 巨胸狂喷奶水视频www网站免费| 日产国产精品亚洲系列| 亚洲色偷偷av男人的天堂| 午夜理伦剧场免费| 成人毛片视频免费网站观看| 亚洲人xxx日本人18| 成年女性特黄午夜视频免费看| 亚洲中文无码亚洲人成影院| 最近高清国语中文在线观看免费| 亚洲精品又粗又大又爽A片| 日韩人妻无码免费视频一区二区三区| 爱情岛亚洲论坛在线观看| 亚洲午夜AV无码专区在线播放| 拍拍拍无挡免费视频网站| 久久亚洲一区二区| 永久免费毛片在线播放| 亚洲欧美不卡高清在线| 亚洲国产精品一区二区三区久久| 亚洲六月丁香六月婷婷色伊人| 无码人妻一区二区三区免费手机| 亚洲GV天堂无码男同在线观看| 免费一级大黄特色大片| 在线毛片片免费观看| 亚洲国产成人久久99精品| 免费看AV毛片一区二区三区| 国产免费MV大全视频网站| 亚洲精品影院久久久久久| 免费看少妇作爱视频| 中文字字幕在线高清免费电影| 久久久久亚洲Av无码专| 免费看美女让人桶尿口| 免费萌白酱国产一区二区三区| 亚洲人成电影在线观看青青| 亚洲国产精品国产自在在线| 50岁老女人的毛片免费观看 |