乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Oracle中的索引原理(1)

       Jimmy Booker 2012-04-17

      Oracle中的索引原理(1)  

      2010-07-12 17:35:44|  分類: Oracle |字號 訂閱

       

          索引是一種允許直接訪問數(shù)據(jù)表中某一數(shù)據(jù)行的樹型結(jié)構(gòu),為了提高查詢效率而引入,是一個(gè)獨(dú)立于表的對象,可以存放在與表不同的表空間中。索引記錄中存有索引關(guān)鍵字和指向表中數(shù)據(jù)的指針(地址)。對索引進(jìn)行的I/O操作比對表進(jìn)行操作要少很多。索引一旦被建立就將被Oracle系統(tǒng)自動(dòng)維護(hù),查詢語句中不用指定使用哪個(gè)索引。

         分類可以按邏輯設(shè)計(jì)和物理實(shí)現(xiàn)來分類。

      索引邏輯分類

      單列索引:基于一列的操作

      多列索引:組合索引,最多為32列。組合索引的列不一定與表中列順序相同。

      惟一索引:列的值各不相同。

      非惟一索引:列的值允許相同。

      基于函數(shù)的惟一索引:利用表中一列或多列基于函數(shù)表達(dá)式所創(chuàng)建的索引。既可以是B-樹,也可以是位圖索引。

      索引物理分類

      分區(qū)或非分區(qū)索引,非分區(qū)既可以是B-樹,也可以是位圖索引。

      B-樹:包括正?;蚍崔D(zhuǎn)關(guān)鍵字索引,反轉(zhuǎn)關(guān)鍵字在數(shù)據(jù)庫優(yōu)化中介紹。

      位圖索引

      B-樹索引

      clip_image002

      索引的存儲(chǔ)方式

          雖然所有索引都使用 B 樹結(jié)構(gòu),但術(shù)語“B 樹索引”通常與存儲(chǔ)每個(gè)關(guān)鍵字的行標(biāo)識列表的索引關(guān)聯(lián)。

      B 樹索引結(jié)構(gòu)

           至上而下,是根結(jié)點(diǎn)、分枝結(jié)點(diǎn)及葉子結(jié)點(diǎn),葉子結(jié)點(diǎn)中有指向表中數(shù)據(jù)行的索引行。葉子結(jié)點(diǎn)被雙向鏈表在一起,以方便按索引關(guān)鍵字升序或降序掃描。

      索引的頂部為根,其中包含指向索引中下一級的項(xiàng),下一級為分枝塊,分枝塊又指向索引中下一級的塊,最低一級為葉節(jié)點(diǎn),其中包含指向表行的索引項(xiàng)。葉塊為雙重鏈接,有助于按關(guān)鍵字值的升序和降序掃描索引。

      索引項(xiàng)葉節(jié)點(diǎn)的格式

          索引項(xiàng)由以下三部分組成:

         項(xiàng)標(biāo)題(entry header),存儲(chǔ)列數(shù)和鎖定信息

         關(guān)鍵字列的“長度- 值”(length-value pairs) ,必需成對出現(xiàn),定義了列長度,緊跟在列長度之后的就是列的值。

         行的行標(biāo)識(RowID), 包含關(guān)鍵字值。

      索引項(xiàng)葉結(jié)點(diǎn)的特征

         在非分區(qū)表上的 B 樹索引中:

         如果多行具有相同的關(guān)鍵字值,并且索引沒有被壓縮,則關(guān)鍵字值重復(fù)存放。

         沒有索引項(xiàng)與所有關(guān)鍵字列都為 NULL 的行對應(yīng),即如果某列值為Null,則不存儲(chǔ)相應(yīng)的索引項(xiàng)。如果Where子句中索引的所在列值為null,Oracle將不使用索引進(jìn)行全表掃描。

         因?yàn)樗行卸紝儆谕欢?,所以使用受限行?biāo)識指向表中的行,使用RowID可以節(jié)省索引存儲(chǔ)空間。

      DML 操作對索引的影響

         當(dāng)在表上執(zhí)行 DML 操作時(shí),Oracle 服務(wù)器將自動(dòng)維護(hù)所有的索引,下面解釋 DML命令對索引的影響:

         插入(Insert)操作導(dǎo)致在適當(dāng)?shù)膲K中插入索引項(xiàng)。

         刪除(Delete)行只導(dǎo)致邏輯刪除索引項(xiàng),刪除的行所用的空間不能用于新項(xiàng),直到刪除塊中的所有項(xiàng)。

          更新(Update)操作將選刪除,再插入,除了在創(chuàng)建時(shí),其它任何時(shí)候PCTFREE 設(shè)置對索引都沒有影響,即使索引塊空間少于 PCTFREE 指定的空間,仍可以向索引塊添加新項(xiàng)。

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多