理论基础 —— 索引
【概述】
當(dāng)數(shù)據(jù)量不是很大時(shí),查找技術(shù)足以滿足需求,但對(duì)于計(jì)算機(jī)應(yīng)用程序來(lái)說(shuō),其是以大型數(shù)據(jù)庫(kù)為中心,并將大型數(shù)據(jù)庫(kù)作為文件存放于外存中的,當(dāng)需要進(jìn)行查找操作時(shí),查找技術(shù)的處理過(guò)于緩慢,因此有了索引技術(shù)。
索引是為了加快查找速度而設(shè)計(jì)的一種數(shù)據(jù)結(jié)構(gòu),一個(gè)文件可能有多個(gè)相關(guān)的索引,每個(gè)索引往往只支持一個(gè)關(guān)鍵碼,通過(guò)索引可以實(shí)現(xiàn)對(duì)文件中記錄的快速訪問(wèn),其常用于組織大型數(shù)據(jù)庫(kù)以及磁盤(pán)文件。
關(guān)于索引技術(shù)的基本概念:
- 文件:存儲(chǔ)在外存上的數(shù)據(jù)的集合
- 記錄:由若干數(shù)據(jù)項(xiàng)組成的數(shù)據(jù)元素,是文件進(jìn)行存取的基本單位
- 數(shù)據(jù)項(xiàng):數(shù)據(jù)記錄中最基本的、不可分割的數(shù)據(jù)單位,是文件中可使用的最小單位
- 索引:將關(guān)鍵碼與其對(duì)應(yīng)的記錄相關(guān)聯(lián)的過(guò)程,隸屬于某一文件
- 索引項(xiàng):由關(guān)鍵碼及關(guān)鍵碼對(duì)應(yīng)的記錄在存取器中的位置等信息組成,是構(gòu)成索引的基本單位
- 靜態(tài)索引:在文件創(chuàng)建時(shí)即生成索引結(jié)構(gòu),一旦生成就固定,只有當(dāng)文件再組織時(shí)才發(fā)生改變
- 動(dòng)態(tài)索引:在文件創(chuàng)建時(shí)即生成索引結(jié)構(gòu),當(dāng)文件執(zhí)行插入、刪除等操作時(shí),索引結(jié)構(gòu)隨之改變
- 線性索引:索引項(xiàng)組織為線性結(jié)構(gòu)
- 樹(shù)形索引:索引項(xiàng)組織為樹(shù)形結(jié)構(gòu)
- 多級(jí)索引:對(duì)于某些大型文件,其索引本身可能也很大,在這種情況下,可對(duì)索引再建一索引,從而構(gòu)成多級(jí)索引結(jié)構(gòu)
【線性索引技術(shù)】
線性索引是將索引項(xiàng)集合組織為線性結(jié)構(gòu),即索引表,其常見(jiàn)的形式有以下三種:
- 稠密索引:點(diǎn)擊這里
- 分塊索引:點(diǎn)擊這里
- 倒排索引:點(diǎn)擊這里
【樹(shù)形索引技術(shù)】
由于樹(shù)結(jié)構(gòu)每個(gè)結(jié)點(diǎn)可以存儲(chǔ)一個(gè)元素,擁有多個(gè)孩子,那么在元素非常多的時(shí)候,就使得要么樹(shù)的度非常大,要么樹(shù)的高度非常大,這就使得在外存查找時(shí),內(nèi)存存取外存的次數(shù)非常多,嚴(yán)重影響了時(shí)間效率。
為了提高時(shí)間效率,就要打破每一結(jié)點(diǎn)只能存儲(chǔ)一個(gè)元素的限制,于是引入了多路查找樹(shù)(Muitl-way Search Tree),其每一結(jié)點(diǎn)的孩子數(shù)可以多于兩個(gè),且每一結(jié)點(diǎn)可存儲(chǔ)多個(gè)元素。
而樹(shù)形索引技術(shù),就是將索引項(xiàng)組織為使用多路查找樹(shù)的樹(shù)形結(jié)構(gòu),其常見(jiàn)的形式有以下四種:
- 2-3 樹(shù):點(diǎn)擊這里
- B 樹(shù)、B+ 樹(shù)、B* 樹(shù):點(diǎn)擊這里
總結(jié)
以上是生活随笔為你收集整理的理论基础 —— 索引的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 排列组合(HDU-1521)
- 下一篇: permutation 1(HDU-66