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

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

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

    Vincent.Chan‘s Blog

    常用鏈接

    統(tǒng)計

    積分與排名

    網(wǎng)站

    最新評論

    ORACLE SQL性能優(yōu)化系列 (十四) 完結(jié)篇

    ORACLE SQL性能優(yōu)化系列 (十四) 完結(jié)篇

    作者: black_snail

     

    關(guān)鍵字 ORACLE PERFORMANCE TUNING PL/SQL

    出處 http://www.dbasupport.com



    46. 連接多個掃描

    如果你對一個列和一組有限的值進(jìn)行比較, 優(yōu)化器可能執(zhí)行多次掃描并對結(jié)果進(jìn)行合并連接.

    舉例:

    SELECT *

    FROM LODGING

    WHERE MANAGER IN (‘BILL GATES','KEN MULLER');


    優(yōu)化器可能將它轉(zhuǎn)換成以下形式

    SELECT *

    FROM LODGING

    WHERE MANAGER = ‘BILL GATES'

    OR MANAGER = 'KEN MULLER';


    當(dāng)選擇執(zhí)行路徑時, 優(yōu)化器可能對每個條件采用LODGING$MANAGER上的索引范圍掃描. 返回的ROWID用來訪問LODGING表的記錄 (通過TABLE ACCESS BY ROWID 的方式). 最后兩組記錄以連接(CONCATENATION)的形式被組合成一個單一的集合.


    Explain Plan :


    SELECT STATEMENT Optimizer=CHOOSE

    CONCATENATION

    TABLE ACCESS (BY INDEX ROWID) OF LODGING

    INDEX (RANGE SCAN ) OF LODGING$MANAGER (NON-UNIQUE)

    TABLE ACCESS (BY INDEX ROWID) OF LODGING

    INDEX (RANGE SCAN ) OF LODGING$MANAGER (NON-UNIQUE)

    譯者按:

    本節(jié)和第37節(jié)似乎有矛盾之處.



    47. CBO下使用更具選擇性的索引

    基于成本的優(yōu)化器(CBO, Cost-Based Optimizer)對索引的選擇性進(jìn)行判斷來決定索引的使用是否能提高效率.

    如果索引有很高的選擇性, 那就是說對于每個不重復(fù)的索引鍵值,只對應(yīng)數(shù)量很少的記錄.

    比如, 表中共有100條記錄而其中有80個不重復(fù)的索引鍵值. 這個索引的選擇性就是80/100 = 0.8 . 選擇性越高, 通過索引鍵值檢索出的記錄就越少.

    如果索引的選擇性很低, 檢索數(shù)據(jù)就需要大量的索引范圍查詢操作和ROWID 訪問表的

    操作. 也許會比全表掃描的效率更低.


    譯者按:

    下列經(jīng)驗請參閱:

    a. 如果檢索數(shù)據(jù)量超過30%的表中記錄數(shù).使用索引將沒有顯著的效率提高.

    b. 在特定情況下, 使用索引也許會比全表掃描慢, 但這是同一個數(shù)量級上的

    區(qū)別. 而通常情況下,使用索引比全表掃描要塊幾倍乃至幾千倍!



    48. 避免使用耗費資源的操作

    帶有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL語句會啟動SQL引擎

    執(zhí)行耗費資源的排序(SORT)功能. DISTINCT需要一次排序操作, 而其他的至少需要執(zhí)行兩次排序.

    例如,一個UNION查詢,其中每個查詢都帶有GROUP BY子句, GROUP BY會觸發(fā)嵌入排序(NESTED SORT) ; 這樣, 每個查詢需要執(zhí)行一次排序, 然后在執(zhí)行UNION時, 又一個唯一排序(SORT UNIQUE)操作被執(zhí)行而且它只能在前面的嵌入排序結(jié)束后才能開始執(zhí)行. 嵌入的排序的深度會大大影響查詢的效率.

    通常, 帶有UNION, MINUS , INTERSECT的SQL語句都可以用其他方式重寫.

    譯者按:

    如果你的數(shù)據(jù)庫的SORT_AREA_SIZE調(diào)配得好, 使用UNION , MINUS, INTERSECT也是可以考慮的, 畢竟它們的可讀性很強(qiáng)



    49. 優(yōu)化GROUP BY

    提高GROUP BY 語句的效率, 可以通過將不需要的記錄在GROUP BY 之前過濾掉.下面兩個查詢返回相同結(jié)果但第二個明顯就快了許多.


    低效:

    SELECT JOB , AVG(SAL)

    FROM EMP

    GROUP JOB

    HAVING JOB = ‘PRESIDENT'

    OR JOB = ‘MANAGER'

    高效:

    SELECT JOB , AVG(SAL)

    FROM EMP

    WHERE JOB = ‘PRESIDENT'

    OR JOB = ‘MANAGER'

    GROUP JOB


    譯者按:

    本節(jié)和14節(jié)相同. 可略過.



    50. 使用日期

    當(dāng)使用日期是,需要注意如果有超過5位小數(shù)加到日期上, 這個日期會進(jìn)到下一天!


    例如:

    1.

    SELECT TO_DATE(‘01-JAN-93'+.99999)

    FROM DUAL;


    Returns:

    '01-JAN-93 23:59:59'

    2.

    SELECT TO_DATE(‘01-JAN-93'+.999999)

    FROM DUAL;


    Returns:

    '02-JAN-93 00:00:00'


    譯者按:

    雖然本節(jié)和SQL性能優(yōu)化沒有關(guān)系, 但是作者的功力可見一斑



    51. 使用顯式的游標(biāo)(CURSORs)

    使用隱式的游標(biāo),將會執(zhí)行兩次操作. 第一次檢索記錄, 第二次檢查TOO MANY ROWS 這個exception . 而顯式游標(biāo)不執(zhí)行第二次操作.



    52. 優(yōu)化EXPORT和IMPORT

    使用較大的BUFFER(比如10MB , 10,240,000)可以提高EXPORT和IMPORT的速度.

    ORACLE將盡可能地獲取你所指定的內(nèi)存大小,即使在內(nèi)存不滿足,也不會報錯.這個值至少要和表中最大的列相當(dāng),否則列值會被截斷.

    譯者按:

    可以肯定的是, 增加BUFFER會大大提高EXPORT , IMPORT的效率. (曾經(jīng)碰到過一個CASE, 增加BUFFER后,IMPORT/EXPORT快了10倍!)

    作者可能犯了一個錯誤: “這個值至少要和表中最大的列相當(dāng),否則列值會被截斷. “

    其中最大的列也許是指最大的記錄大小.

    關(guān)于EXPORT/IMPORT的優(yōu)化,CSDN論壇中有一些總結(jié)性的貼子,比如關(guān)于BUFFER參數(shù), COMMIT參數(shù)等等, 詳情請查.



    53. 分離表和索引

    總是將你的表和索引建立在不同的表空間內(nèi)(TABLESPACES). 決不要將不屬于ORACLE內(nèi)部系統(tǒng)的對象存放到SYSTEM表空間里. 同時,確保數(shù)據(jù)表空間和索引表空間置于不同的硬盤上.


    譯者按:

    “同時,確保數(shù)據(jù)表空間和索引表空間置與不同的硬盤上.”可能改為如下更為準(zhǔn)確 “同時,確保數(shù)據(jù)表空間和索引表空間置與不同的硬盤控制卡控制的硬盤上.”


    (全文完)

    作者:

    Black_Snail

    ligang1000@hotmail.com

    4/Sep/2003

    posted on 2006-02-25 22:34 Vincent.Chen 閱讀(194) 評論(0)  編輯  收藏 所屬分類: Database

    主站蜘蛛池模板: 成人免费黄色网址| 免费无码一区二区三区蜜桃| 成年黄网站色大免费全看| 亚洲国产精华液网站w| 99精品视频在线观看免费| 四虎亚洲国产成人久久精品| 免费看一级毛片在线观看精品视频| 国产精品高清全国免费观看| 极品色天使在线婷婷天堂亚洲| 免费成人av电影| 一级女人18片毛片免费视频| 337p日本欧洲亚洲大胆裸体艺术| 中文字幕a∨在线乱码免费看| 亚洲大尺度无码专区尤物| 久久久国产精品福利免费| 精品亚洲成a人片在线观看少妇| 天天影院成人免费观看| 一本色道久久88—综合亚洲精品 | 亚洲日本久久久午夜精品| 一二三四在线播放免费观看中文版视频 | 日韩电影免费观看| 亚洲黄色免费网址| 久久久久免费看黄A片APP| 亚洲AV无码一区二区三区电影| 亚洲AV中文无码乱人伦在线视色| 国产精品福利片免费看| 亚洲精品午夜久久久伊人| 女人18一级毛片免费观看| 四虎影视久久久免费观看| 亚洲精品国产美女久久久| 97人妻无码一区二区精品免费| 亚洲国产aⅴ成人精品无吗| 亚洲视频在线一区二区| 2019中文字幕在线电影免费| 亚洲精品成a人在线观看☆| 亚洲免费观看视频| 我要看WWW免费看插插视频| 四虎影视永久在线精品免费| 久久亚洲私人国产精品vA| 国产免费av一区二区三区| 久热免费在线视频|