
文章插圖
數(shù)據(jù)庫的索引方式由于許多查詢只涉及文件中的少量記錄 , 故我們需要能直接定位滿足查詢條件的功能 。
索引的好處:
在查詢中提高程序的性能 。通過創(chuàng)建唯一性索引 , 可以保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性 。在使用分組和排序子句進(jìn)行數(shù)據(jù)檢索時(shí) , 可以減少查詢中分組和排序的時(shí)間 。索引的壞處:
創(chuàng)建索引和維護(hù)索引耗費(fèi)資源和時(shí)間 , 且隨數(shù)據(jù)量的增大而增大 。索引需要占用物理空間 , 如果要建立聚簇索引 , 所需要的空間會(huì)更大 。在對(duì)表中的數(shù)據(jù)進(jìn)行刪除和修改時(shí)需要耗費(fèi)較多的時(shí)間 , 因?yàn)樗饕惨獎(jiǎng)討B(tài)的維護(hù) 。數(shù)據(jù)庫中有兩種基本的索引類型:
順序索引:索引中的記錄基于搜索碼值順序排序 , 包括索引順序文件和 B+ 樹索引文件等 。散列索引:索引中的記錄基于搜索碼值的散列函數(shù)的值平均地 , 隨機(jī)地分布在若干個(gè)散列桶中 。順序索引1. 索引順序文件基本上克服了邊長記錄的順序文件不能隨機(jī)訪問 , 以及不便于記錄到的增加或刪除 。
記錄仍然以關(guān)鍵字的順序組織起來 。引入了文件索引表 , 通過該表可以實(shí)現(xiàn)對(duì)索引順序文件的隨機(jī)訪問 。
在順序文件組織的基礎(chǔ)上 , 索引順序文件分為兩種:稠密索引和稀疏索引 。
稠密索引:對(duì)應(yīng)索引文件中搜索碼的每一個(gè)值在索引中都有一個(gè)索引記錄 。每一個(gè)索引項(xiàng)包含搜索碼值和指向既有該搜索碼值的第一個(gè)數(shù)據(jù)記錄(或文件塊)的指針 , 因?yàn)樵陧樞蛭募M織基礎(chǔ)上 , 所以知道第一個(gè) , 下一個(gè)也會(huì)是相同的 。稀疏索引:只為文件中搜索碼的某些值建立索引記錄 。每一個(gè)索引項(xiàng)包含搜索碼值和指向具有該搜索碼值的第一個(gè)數(shù)據(jù)記錄的指針 。2. 多級(jí)索引文件即使采用稀疏索引 , 對(duì)于一個(gè)大型數(shù)據(jù)庫而言 , 索引本身也可能變得很大 。
如果索引過大 , 主存中不能讀入所有的索引塊 , 這樣的查詢處理過程中 , 搜索索引就必須讀大量的索引塊 。當(dāng)然在索引上可以用二分法來定位索引塊 , 但遺憾的是二分法不能處理有移除塊的情況 。
所謂多級(jí)索引就是在索引之上再建立稀疏索引 , 像對(duì)待其他順序文件那樣對(duì)待順序索引 。
3. 輔助索引輔助索引是相對(duì)于聚集索引而言的 , 也叫非聚集索引 。輔助索引的行存儲(chǔ)的不是對(duì)應(yīng)記錄的全部信息 , 而是指向?qū)?yīng)記錄的指針 。
所以 , 輔助索引必須是稠密索引 , 即對(duì)于每個(gè)搜索碼值都必須有一個(gè)索引項(xiàng) , 而且該索引項(xiàng)要存放指向數(shù)據(jù)文件中具有該搜索碼值得所有記錄的指針 。
4. B+ 樹索引索引順文件組織的最大不足在于:隨著文件的增大 , 索引查找的性能和數(shù)據(jù)順序掃描的性能會(huì)下降 。雖然這種性能下降可以通過對(duì)文件進(jìn)行重組來彌補(bǔ) , 但頻繁地進(jìn)行重組也是要避免的 。
B+ 樹的特點(diǎn):
根節(jié)點(diǎn)至少有兩個(gè)子女 。每個(gè)中間節(jié)點(diǎn)有 [n/2] 到 n 個(gè)孩子節(jié)點(diǎn) , n 對(duì)特定的樹是固定的 。采用平衡樹結(jié)構(gòu) , 每個(gè)葉節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑長度相同 。每個(gè)節(jié)點(diǎn)中的元素從小到大排列 , 節(jié)點(diǎn)中 k-1 個(gè)搜索碼值恰好是 k 個(gè)子節(jié)點(diǎn)域的劃分 。(即有 k-1 個(gè)值 , k 個(gè)子節(jié)點(diǎn))Mysql 不同搜索引擎的 B+ 樹處理
MYISAM:按列值和行號(hào)來組織索引 , 它的葉子節(jié)點(diǎn)中保存的實(shí)踐上是指向存放數(shù)據(jù)的物理課的指針 。(即使用輔助索引)InnoDB:按聚簇索引的形式存儲(chǔ)數(shù)據(jù) , 每個(gè)葉子節(jié)點(diǎn)除了包含整行記錄 , 還包含事務(wù) ID , 回滾指針等 。聚簇索引:聚簇索引就是按照每張表的主鍵構(gòu)造一顆B+樹 , 同時(shí)葉子節(jié)點(diǎn)中存放的就是整張表的行記錄數(shù)據(jù) , 也將聚集索引的葉子節(jié)點(diǎn)稱為數(shù)據(jù)頁 。這個(gè)特性決定了索引組織表中數(shù)據(jù)也是索引的一部分 , 每張表只能擁有一個(gè)聚簇索引 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- 集“五?!庇蛛p叒叕來了!今年教你玩點(diǎn)不一樣的! 福字圖片
- redis支持的5種類型 redis支持的數(shù)據(jù)類型有哪些
- 檢測(cè)水表是否漏水的3種方式 如何看水表是否漏水
- 清理c盤最簡單的方法 服務(wù)器c盤滿了怎么清理
- 免費(fèi)分享這4種請(qǐng)求方式 jquery發(fā)送ajax請(qǐng)求的方法有哪些
- 網(wǎng)絡(luò)基礎(chǔ)知識(shí)詳細(xì)介紹 以太網(wǎng)和局域網(wǎng)的區(qū)別
- 蛋白質(zhì)對(duì)人體的重要性 蛋白質(zhì)是什么
- 一個(gè)愛心是什么意思 愛心是什么什么
- 從毛澤東的啟蒙運(yùn)動(dòng)思想看中華民族
- 校秋季運(yùn)動(dòng)會(huì)
