亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Oracle 基礎(chǔ)學(xué)習(xí)之索引

系統(tǒng) 2263 0

一. 按存儲(chǔ)結(jié)構(gòu)分

a. b樹(shù)索引   默認(rèn)索引

    ?    即二叉搜索樹(shù):

??????         1.所有非葉子結(jié)點(diǎn)至多擁有兩個(gè)兒子(Left和Right)

           2.所有結(jié)點(diǎn)存儲(chǔ)一個(gè) 關(guān)鍵字

??????         3.非葉子結(jié)點(diǎn)的左指針指向小于其關(guān)鍵字的子樹(shù),右指針指向大于其關(guān)鍵字的子樹(shù);

??????         如:

            ?B樹(shù)的搜索,從 根結(jié)點(diǎn) 開(kāi)始,如果查詢的關(guān)鍵字與結(jié)點(diǎn)的關(guān)鍵字相等,那么就命中;

            否則,如果查詢關(guān)鍵字比結(jié)點(diǎn)關(guān)鍵字小,就進(jìn)入左兒子;如果比結(jié)點(diǎn)關(guān)鍵字大,就進(jìn)入

            右兒子;如果左兒子或右兒子的指針為空,則報(bào)告找不到相應(yīng)的關(guān)鍵字;

??????          ?如果B樹(shù)的所有非葉子結(jié)點(diǎn)的左右子樹(shù)的結(jié)點(diǎn)數(shù)目均保持差不多(平衡),那么B樹(shù)

            的搜索性能逼近 二分查找 ;但它比連續(xù)內(nèi)存空間的二分查找的優(yōu)點(diǎn)是,改變B 樹(shù)結(jié)構(gòu)

             (插入與刪除結(jié)點(diǎn))不需要移動(dòng)大段的內(nèi)存數(shù)據(jù),甚至通常是 常數(shù) 開(kāi)銷;

??????         如:

            但B樹(shù)在經(jīng)過(guò)多次插入與刪除后,有可能導(dǎo)致不同的結(jié)構(gòu):

??             右邊也是一個(gè)B樹(shù),但它的搜索性能已經(jīng)是 線性 的了;同樣的關(guān)鍵字集合有可能導(dǎo)致不同的

            樹(shù)結(jié)構(gòu)索引;所以,使用B樹(shù)還要考慮盡可能讓B樹(shù)保持左圖的結(jié)構(gòu),和避免右圖的結(jié)構(gòu),也就

            是所謂的“平衡”問(wèn)題;??????

??????             實(shí)際使用的B樹(shù)都是在原B樹(shù)的基礎(chǔ)上加上平衡算法,即“ 平衡二叉樹(shù) ”;如何保持B樹(shù)

            結(jié)點(diǎn)分布均勻的平衡算法是平衡 二叉樹(shù) 的關(guān)鍵;平衡算法是一種在B樹(shù)中插入和刪除結(jié)點(diǎn)的策略;

b. 位圖索引

        如有表 test(id,name,address)
        數(shù)據(jù)
            (1,張三,大連)
            (2,李四,天津)
            (3,王五,北京)
            (4,趙六,大連)
            ....

            類似這樣的數(shù)據(jù),如果查詢的時(shí)候用到 【where address='大連'】,因?yàn)閿?shù)據(jù)庫(kù)中有很多這樣的數(shù)據(jù),所以一般的索引起不到查詢加速的作用,而建立位圖索引后會(huì)產(chǎn)生如下位圖效果:
            假設(shè)有4條數(shù)據(jù)(就如上所示)

            大連 天津? 北京
            1??? 0???? 0
            0??? 1???? 0
            0??? 0???? 1
            1??? 0???? 0

            這樣當(dāng)查詢:
                select * from 表 where address='大連' or address='北京';
            的時(shí)候數(shù)據(jù)庫(kù)很快就能根據(jù) 同行的 1和0 判斷出那一條數(shù)據(jù)符合要求。

在實(shí)際應(yīng)用中,如果某個(gè)字段的值需要頻繁更新,那么就不適合在它上面創(chuàng)建位圖索引。

            在位圖索引中,如果你更新或插入其中一條數(shù)值為N的記錄,

         ????  那么相應(yīng)表中數(shù)值為N的記錄(可能成百上千條)全部被Oracle鎖定,

          ???? 這就意味著其它用戶不能同時(shí)更新這些數(shù)值為N的記錄,其它用戶必須要等第一個(gè)用戶提交后,

          ???? 才能獲得鎖,更新或插入數(shù)據(jù),bitmap index它主要用于決策支持系統(tǒng)或靜態(tài)數(shù)據(jù)。

?

c. 反向鍵索引

        我們知道Oracle會(huì)自動(dòng)為表的主鍵列建立索引,這個(gè)默認(rèn)的索引是普通的B-Tree索引。對(duì)于主鍵值是按順序(遞增或遞減)加入的情況,默認(rèn)的B- Tree索引并不理想。這是因?yàn)槿绻饕械闹稻哂袊?yán)格順序時(shí),隨著數(shù)據(jù)行的插入,索引樹(shù)的層級(jí)增長(zhǎng)很快。搜索索引發(fā)生的I/O讀寫次數(shù)和索引樹(shù)的層級(jí)數(shù)成正比,也就是說(shuō),一棵具有5個(gè)層級(jí)的B-Tree索引,在最終讀取到索引數(shù)據(jù)時(shí)最多可能發(fā)生多達(dá)5次I/O操作。因而,減少索引的層級(jí)數(shù)是索引性能調(diào)整的一個(gè)重要方法。

如果索引列的數(shù)據(jù)以嚴(yán)格的有序的方式插入,那么B-Tree索引樹(shù)將變成一棵不對(duì)稱的"歪樹(shù)",

而如果索引列的數(shù)據(jù)以隨機(jī)值的方式插入,我們將得到一棵趨向?qū)ΨQ的索引樹(shù),

對(duì)稱的B-Tree索引

搜索到A塊需要進(jìn)行5次I/O操作,而圖 6僅需要3次I/O操作。

既然索引列數(shù)據(jù)從序列中獲取,其有序性無(wú)法規(guī)避,但在建立索引時(shí),Oracle允許對(duì)索引列的值進(jìn)行反向,即預(yù)先對(duì)列值進(jìn)行比特位的反向,如 1000,10001,10011,10111,1100經(jīng)過(guò)反向后的值將是0001,1001,1101,0011。顯然經(jīng)過(guò)位反向處理的有序數(shù)據(jù)變得比較隨機(jī)了,這樣所得到的索引樹(shù)就比較對(duì)稱,從而提高表的查詢性能。

但反向鍵索引也有它局限性:如果在WHERE語(yǔ)句中,需要對(duì)索引列的值進(jìn)行范圍性的搜索,如BETWEEN、<、>等,其反向鍵索引無(wú)法使用,此時(shí),Oracle將執(zhí)行全表掃描;只有對(duì)反向鍵索引列進(jìn)行 <> 和 = 的比較操作時(shí),其反向鍵索引才會(huì)得到使用。

?

二. 按索引值分

    a. 唯一索引

        列上的值是唯一的,主鍵為唯一索引

    b. 非唯一索引

        在列上的值可以為null

三. 其它索引

    a. 單列索引

        一個(gè)列建索引

    b. 組合索引

        多個(gè)列一起建索引

    c. 基于函數(shù)索引

?        使用函數(shù)里面的表達(dá)式來(lái)索引

?

能用唯一索引,一定用唯一索引

  能加非空,就加非空約束

  一定要統(tǒng)計(jì)表的信息,索引的信息,柱狀圖的信息。

  聯(lián)合索引的順序不同,影響索引的選擇,盡量將值少的放在前面

  只有做到以上四點(diǎn),數(shù)據(jù)庫(kù)才會(huì)正確的選擇執(zhí)行計(jì)劃。

?

四: 創(chuàng)建語(yǔ)法

    create unique|bitmap index 索引名稱

    on 表名

    (列1 asc|desc?,列2.。。。)

    reverse

    reverse 為反向鍵索引,unique唯一和bitmap位置不寫為b樹(shù)索引


?

Oracle 基礎(chǔ)學(xué)習(xí)之索引


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 九九99热| 999伊人| 麻豆一区二区三区四区 | 亚洲综合免费视频 | 久久这里精品青草免费 | 国产成 人 综合 亚洲绿色 | 国产视频毛片 | 亚洲国产人成中文幕一级二级 | 91在线视频免费看 | 亚洲欧美v视色一区二区 | 色婷婷久久综合中文久久一本 | 99久久综合狠狠综合久久aⅴ | 亚洲免费福利视频 | 日韩精品一区二区三区中文字幕 | 天天干天天干天天操 | 精品久久免费观看 | 亚洲欧美综合乱码精品成人网 | 中文字幕一区二区三区免费看 | 欧美精品午夜毛片免费看 | 98精品国产综合久久 | 精品国产免费一区二区三区 | 不卡无毒免费毛片视频观看 | 中文字幕日韩在线观看 | 久久精品中文字幕第一页 | 亚洲精品久久久久午夜 | 黄色a级毛片 | 日本不卡高清免费v日本 | 亚洲婷婷在线视频 | 国产毛片一级国语版 | 久久精品国产欧美日韩99热 | 国产欧美日韩中文字幕 | 色婷婷综合在线 | 亚洲成a人片在线观看精品 亚洲成a人一区二区三区 | 免费视频成人国产精品网站 | 亚洲精品美女久久久久99 | 欧美精品久久久久久久久大尺度 | 国产精品拍自在线观看 | www.夜夜骑| 鲁啊鲁在线视频 | 日韩成人免费在线视频 | 久久国产亚洲精品 |