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