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

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

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

    Jason ---分享,共同進步

    激情成就夢想,努力創(chuàng)造未來
    隨筆 - 53, 文章 - 1, 評論 - 45, 引用 - 0
    數(shù)據(jù)加載中……

    索引的使用

    索引的簡單使用說明:

    一.常用掃描方式:
    .全表掃描
     全表掃描就是順序地訪問表中每條記錄.
    .索引掃描  
    索引唯一掃描(index unique scan)
    索引范圍掃描(index range scan)
    索引全掃描(index full scan)
    索引快速掃描(index fast full scan) 

    1.索引唯一掃描(index unique scan)
    通過唯一索引查找一個數(shù)值經(jīng)常返回單個ROWID。如果該唯一索引有多個列組成(即組合索引),則至少要有組合索引的引導(dǎo)列參與到該查詢中,如創(chuàng)建索引:create index index_test on building(name,status)。
    如:語句:
    select id from building where name='國際科技大廈'
    此語句可以使用該索引。如果該語句只返回一行,則存取方法稱為索引唯一掃描。
    而語句:
    select name from building where status ='1'
    因為where條件沒有用到索引的引導(dǎo)列。所以索引不生效。

    2.索引范圍掃描(index range scan)
    使用一個索引存取多行數(shù)據(jù),同上面一樣,如果索引是組合索引
    如:select id from building where name like 'H%' and status='1' 語句返回多行數(shù)據(jù),此時的存取方法稱為索引范圍掃描。
    使用index rang scan的3種情況:
    (a) 在唯一索引列上使用了range操作符(> < <> >= <= between)
    (b) 在組合索引上,只使用部分列進行查詢,導(dǎo)致查詢出多行
    (c) 對非唯一索引列上進行的任何查詢。

    3. 全索引掃描(index full scan)
    SQL請求的全部列(column)必須駐留在索引樹中;也就是說,SELECT和WHERE字句中的所有數(shù)據(jù)列必須存在于索引中。并且排序返回。

    4.索引快速掃描(index fast full scan)
    掃描索引中的所有的數(shù)據(jù)塊,與 index full scan很類似,但是一個顯著的區(qū)別就是它不對查詢出的數(shù)據(jù)進行排序,即數(shù)據(jù)不是以排序順序被返回。

     

    二.什么情況下應(yīng)該建立索引
    1.表的主關(guān)鍵字(建立唯一索引)
    2.表的字段唯一約束
    3.直接條件查詢的字段,在SQL中用于條件約束的字段
    4.查詢中與其它表關(guān)聯(lián)的字段,字段常常建立了外鍵關(guān)系
    5.查詢中排序的字段
    6.查詢中統(tǒng)計或分組統(tǒng)計的字段

    三.什么情況下應(yīng)不建或少建索引
    1.表的記錄很少
    2.對一些經(jīng)常處理的業(yè)務(wù)表應(yīng)在查詢允許的情況下盡量減少索引
    3.數(shù)據(jù)重復(fù)且分布平均的表字段
    假如一個表有10萬行記錄,有一個字段A只有T和F兩種值,且每個值的分布概率大約為50%,那么對這種表A字段建索引一般不會提高數(shù)據(jù)庫的查詢速度

    四.索引應(yīng)用注意事項
    1. IS NULL 與 IS NOT NULL
    不能用null作索引,任何包含null值的列都將不會被包含在索引中。即使索引有多列這樣的情況下,只要這些列中有一列含有null,該列就會從索引中排除。也就是說如果某列存在空值,即使對該列建索引也不會提高性能。 任何在where子句中使用is null或is not null的語句優(yōu)化器是不允許使用索引的。

    2.帶通配符(%)的like語句
    如: select * from building where name like '%中心%'
    name為building表的索引,則此索引就不會生效,這里由于通配符(%)在搜尋詞首出現(xiàn),通配符如此使用會降低查詢速度。然而當(dāng)通配符出現(xiàn)在字符串其他位置時,優(yōu)化器就能利用索引
    select * from building where name like '&中心%'

    3. Order by語句
      ORDER BY語句決定了如何將返回的查詢結(jié)果排序,任何在Order by語句的非索引項或者有計算表達式都將降低查詢速度。order by后面的排序字段盡量使用索引字段。

    4.'<>'的用法
    例如:
    select * from building where id<>5000;
    select * from building where id>5000 or id<5000
    結(jié)果一樣,但是第二句id索引生效。

    5.可以使用外部連接優(yōu)化not in子句,例如:
    select name from building where fk_building in (select deptid from test where name='test' and ifdeleted=0);
      
    改為:
    select name from building a,test b where a.fk_building=b.id and b.name='test' and ifdeleted=0;

    6.索引列是否函數(shù)的參數(shù)。如是,索引在查詢時用不上。

    7.主從表關(guān)聯(lián)方式
    如果:building.id上有一索引
    在district.id上有索引
    如:
    select contract_code from building a,district b where a.id=b.id
    building.id上的索引就會生效
    反之同理。


    8.是否存在潛在的數(shù)據(jù)類型轉(zhuǎn)換。如將字符型數(shù)據(jù)與數(shù)值型數(shù)據(jù)比較,ORACLE會自動將字符型用to_number()函數(shù)進行轉(zhuǎn)換,從而導(dǎo)致上一種現(xiàn)象的發(fā)生。


    9.索引應(yīng)用的優(yōu)先級;

    (1).唯一性索引的等級高于非唯一性索引. 這個規(guī)則只有當(dāng)WHERE子句中索引列和常量比較才有效.如果索引列和其他表的索引類相比較. 這種子句在優(yōu)化器中的等級是非常低的.

    (2).如果多個索引在一個查詢中都可應(yīng)用,那么如果條件中應(yīng)用索引和常量進行比較,那么這個索引先被利用。


    10.語句的執(zhí)行計劃中有不良索引時,可以人為地屏蔽該索引,方法:
      
      。數(shù)值型:在索引字段上加0,例如
      select * from building where id+0 = 0;
      
      。字符型:在索引字段上加‘’,例如
      select * from building where name||’’='test';

     

     

     

    posted on 2008-03-11 15:07 agun 閱讀(723) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

    主站蜘蛛池模板: 亚洲色偷偷综合亚洲AV伊人蜜桃 | 亚洲人成网站18禁止| 亚洲福利电影一区二区?| 亚洲国产成人久久综合碰碰动漫3d| 国产亚洲成人在线播放va| 亚洲视频一区二区| 国外亚洲成AV人片在线观看| 亚洲日韩人妻第一页| 国产性爱在线观看亚洲黄色一级片 | 美女被爆羞羞网站免费| 老司机午夜在线视频免费观| 视频一区二区三区免费观看| 黄色一级视频免费观看| 一级一级毛片免费播放| 伊人免费在线观看高清版| 免费国产99久久久香蕉| 午夜免费福利片观看| 91久久精品国产免费直播| 100000免费啪啪18免进| 毛片免费在线观看网址| 国产一区二区免费在线| 中文字幕人成人乱码亚洲电影| 亚洲成A人片在线观看WWW| 亚洲一区二区三区电影| 色婷五月综激情亚洲综合| 在线观看日本亚洲一区| 美女免费视频一区二区三区| 中文字幕无线码免费人妻| 99热这里只有精品免费播放| 一二三四在线观看免费高清中文在线观看 | 操美女视频免费网站| 亚洲第一福利网站在线观看| 亚洲无线码一区二区三区| 91亚洲一区二区在线观看不卡| 亚洲精品伊人久久久久| 猫咪www免费人成网站| 成人无码a级毛片免费| 又黄又爽又成人免费视频| 国产一级理论免费版| 亚洲日韩精品一区二区三区 | 亚洲天堂在线视频|