![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-8/28/23/fb57ab90-b8ed-45fd-b6f6-3cc092fb0fb9/fb57ab90-b8ed-45fd-b6f6-3cc092fb0fb9pic.jpg)
![索引原理_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-8/28/23/fb57ab90-b8ed-45fd-b6f6-3cc092fb0fb9/fb57ab90-b8ed-45fd-b6f6-3cc092fb0fb91.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、你真的了解你真的了解SQL的索引嗎(索引原理的索引嗎(索引原理篇)篇)20101218上篇文章粗略的總結(jié)了些SQL聚集索引與非聚集索引的區(qū)別,但看起來好像不太清晰,這篇我通過索引原理來再一次分析下。索引是為檢索而存在的,就是說索引并不是一個表必須的。表索引由多個頁面組成,這些頁面一起組成了一個樹形結(jié)構(gòu),即我們通常說的B樹,首先來看下表索引的組成部分:根極節(jié)點,root,它指向另外兩個頁,把一個表的記錄從邏輯上分成非葉級節(jié)點NonLeaf
2、Level(枝),它指向了更加小的葉級節(jié)點LeafLevel(葉)。根節(jié)點、非葉級節(jié)點和葉級節(jié)點都位于索引頁中,統(tǒng)稱為索引葉節(jié)點,屬于索引頁的范籌。這些“枝“、“葉“最終指向數(shù)據(jù)頁Page。根級節(jié)點和葉級節(jié)點之間的葉又叫數(shù)據(jù)中間頁。根節(jié)點對應(yīng)了sysindexes表的Root字段,記載了非葉級節(jié)點的物理位置(即指針);非葉級節(jié)點位于根節(jié)點和葉節(jié)點之間,記載了指向葉級節(jié)點的指針;而葉級節(jié)點則最終指向數(shù)據(jù)頁,這就是最后的B樹。數(shù)據(jù)庫是怎樣訪
3、問表數(shù)據(jù)的:第一:沒有創(chuàng)建任何索引的表。這種表我們稱為堆表,因為所有的數(shù)據(jù)頁都是無序的,雜亂無章的,在查詢數(shù)據(jù)時,需要一條一條記錄查詢,有時第一條記錄就能找到,最壞的情況是在最后一條記錄中查找到但是千萬不要認(rèn)為SQL此時查找到數(shù)據(jù)后會當(dāng)成結(jié)果立即返回,SQL即使查找到了記錄,也會將所有數(shù)據(jù)遍歷一次,這能從最終的執(zhí)行計劃中得知,就是平時說的表掃描,對于沒有索引的表也能查詢,就是效率會特別低,如果數(shù)據(jù)量稍大的話。問題:SQL是如何得知表沒有
4、索引呢?SQL在接到查詢請求的時候,會分析sysindexes表中索引標(biāo)志符(INDID:IndexID)的字段的值,如果該值為0,表示這是一張數(shù)據(jù)表而不是索引表,SQL就會使用sysindexes表的另一個字段FirstIAM值中找到該表的IAM頁鏈也就是所有數(shù)據(jù)頁集合。至于什么是IAM大家可以網(wǎng)上搜索下。第二:訪問創(chuàng)建有非聚集索引的表。非聚集索引可以建多個形成B樹結(jié)構(gòu),葉級節(jié)點不包含數(shù)據(jù)頁,只包含索引行。如果表中只有非聚集索引,則每
5、個索引行包含了非聚集索引鍵值以及行定位符(ROWIDRID),他們指向具有該鍵值的數(shù)據(jù)行。RID由文件ID、頁編號和在頁中行的編號組成。當(dāng)INDID的值在2250之間時,說明表中存在非聚集索引頁。SQL調(diào)用ROOT字段的值指向非聚集索引B樹的ROOT,查找與被查詢最相近的值,根據(jù)這個值找到在非葉級節(jié)點中的頁號,在葉級節(jié)點相應(yīng)的頁面中找到該值的RID,最后根據(jù)這個RID在Heap中定位所在的頁和行并返回到查詢端。上篇文章的cityid上建
6、立了非聚集索引,執(zhí)行FromstudentWherecityid=0101時,查詢過程是:第四:怎樣訪問既有聚集索引、又有非聚集索引的數(shù)據(jù)表:username字段上建立了聚集索引,cityid上建立了非聚集索引,當(dāng)執(zhí)行FromstudentWherecityid=0101時,查詢過程是:1.在sysindexes表查詢INDID值為2說明有非聚集索引;2.從根出發(fā),在cityid的非聚集索引的非葉級節(jié)點中定位最接近0101的條目;3.從
7、上面條目下的葉級頁面中查到0101的邏輯位置,是聚集索引的指針;4.根據(jù)指針?biāo)甘疚恢?,進(jìn)入位于username的聚集索引中的葉級頁面中找到0101數(shù)據(jù)記錄;5.將該記錄返回客戶端。通過上面數(shù)據(jù)庫訪問索引的原理,我們就很容易解釋聚集索引與非聚集索引的區(qū)別了,原理都一樣,關(guān)鍵看什么場合應(yīng)用什么索引了下一篇我來總結(jié)一些不同場合最適合采用什么樣的索引,不對之外多多指點。二、索引優(yōu)化技術(shù)二、索引優(yōu)化技術(shù)是不是有索引就一定檢索的快呢?答案是否。有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 搜索引擎原理
- 搜索引擎工作原理
- 搜索引擎原理07065
- 搜索引擎技術(shù)原理
- 搜索引擎原理06190
- 搜索引擎工作原理概述
- 搜索引擎基本工作原理
- 搜索引擎中文分詞原理與實現(xiàn)
- Web搜索引擎原理與實現(xiàn).pdf
- 搜索引擎營銷原理及模式分析
- 搜索引擎工作原理簡單模擬
- 搜索引擎蜘蛛爬行原理和規(guī)律分析
- 搜索引擎判定相似文章網(wǎng)頁的原理大解析
- 適于校園網(wǎng)的搜索引擎原理及設(shè)計.pdf
- 索引
- sql聚集索引和非聚集索引
- 從天網(wǎng)搜索引擎(5-v.org)介紹原理技術(shù)大揭密
- 儀表索引表
- 涂料標(biāo)準(zhǔn)索引
- 陶瓷標(biāo)準(zhǔn)索引
評論
0/150
提交評論