用戶對(duì)數(shù)據(jù)庫(kù)最頻繁的操作是進(jìn)行數(shù)據(jù)查詢。一般情況下,數(shù)據(jù)庫(kù)在進(jìn)行查詢操作時(shí)需要對(duì)整個(gè)表進(jìn)行數(shù)據(jù)搜索。當(dāng)表中的數(shù)據(jù)很多時(shí),搜索數(shù)據(jù)就需要很長(zhǎng)的時(shí)間,這就造成了服務(wù)器的資源浪費(fèi)。為了提高檢索數(shù)據(jù)的能力,數(shù)據(jù)庫(kù)引入了索引機(jī)制。
2.有關(guān)“索引”的比喻
從某種程度上,可以把數(shù)據(jù)庫(kù)看作一本書(shū),把索引看作書(shū)的目錄,通過(guò)目錄查找書(shū)中的信息,顯然較沒(méi)有目錄的書(shū)方便、快捷。
3.數(shù)據(jù)庫(kù)索引實(shí)際是什么?(兩部分組成)
索引是一個(gè)單獨(dú)的、物理的數(shù)據(jù)庫(kù)結(jié)構(gòu),它是某個(gè)表中一列或若干列值的集合和相應(yīng)的指向表中物理標(biāo)識(shí)這些值的數(shù)據(jù)頁(yè)的邏輯指針清單。
4.索引在表中的角色
一個(gè)表的存儲(chǔ)是由兩部分組成的,一部分用來(lái)存放表的數(shù)據(jù)頁(yè)面,另一部分存放索引頁(yè)面。索引就存放在索引頁(yè)面上,
5.索引高效原理
通常,索引頁(yè)面相對(duì)于數(shù)據(jù)頁(yè)面來(lái)說(shuō)小得多。當(dāng)進(jìn)行數(shù)據(jù)檢索時(shí),系統(tǒng)先搜索索引頁(yè)面,從中找到所需數(shù)據(jù)的指針,再直接通過(guò)指針從數(shù)據(jù)頁(yè)面中讀取數(shù)據(jù)。
6.索引的分類
在SQL Server 的數(shù)據(jù)庫(kù)中按存儲(chǔ)結(jié)構(gòu)的不同將索引分為兩類:簇索引(Clustered Index)和非簇索引(Nonclustered Index)。
(1)簇索引對(duì)表的物理數(shù)據(jù)頁(yè)中的數(shù)據(jù)按列進(jìn)行排序,然后再重新存儲(chǔ)到磁盤上,即簇索引與數(shù)據(jù)是混為一體,的它的葉節(jié)點(diǎn)中存儲(chǔ)的是實(shí)際的數(shù)據(jù)。由于簇索引對(duì)表中的數(shù)據(jù)一一進(jìn)行了排序,因此用簇索引查找數(shù)據(jù)很快。但由于簇索引將表的所有數(shù)據(jù)完全重新排列了,它所需要的空間也就特別大,大概相當(dāng)于表中數(shù)據(jù)所占空間的120% 。表的數(shù)據(jù)行只能以一種排序方式存儲(chǔ)在磁盤上,所以一個(gè)表只能有一個(gè)簇索引。
(2)非簇索引具有與表的數(shù)據(jù)完全分離的結(jié)構(gòu),使用非簇索引不用將物理數(shù)據(jù)頁(yè)中的數(shù)據(jù)按列排序。非簇索引的葉節(jié)點(diǎn)中存儲(chǔ)了組成非簇索引的關(guān)鍵字的值和行定位器。行定位器的結(jié)構(gòu)和存儲(chǔ)內(nèi)容取決于數(shù)據(jù)的存儲(chǔ)方式。如果數(shù)據(jù)是以簇索引方式存儲(chǔ)的,則行定位器中存儲(chǔ)的是簇索引的索引鍵;如果數(shù)據(jù)不是以簇索引方式存儲(chǔ)的,這種方式又稱為堆存儲(chǔ)方式 (Heap Structure),則行定位器存儲(chǔ)的是指向數(shù)據(jù)行的指針。非簇索引將行定位器按關(guān)鍵字的值用一定的方式排序,這個(gè)順序與表的行在數(shù)據(jù)頁(yè)中的排序是不匹配的。由于非簇索引使用索引頁(yè)存儲(chǔ)因此它比簇索引需要更多的存儲(chǔ)空間且檢索效率較低但一個(gè)表只能建一個(gè)簇索引,當(dāng)用戶需要建立多個(gè)索引時(shí)就需要使用非簇索引了。
小結(jié):Clustered Index 是與物理數(shù)據(jù)混在一起并對(duì)物理數(shù)據(jù)進(jìn)重排,就像使用拼音查字典;Unclustered Index 是與物理數(shù)據(jù)完全分離的,利用額外空間對(duì)關(guān)鍵字進(jìn)行重排,就像使用部首查字典。
數(shù)據(jù)庫(kù)索引應(yīng)用
一、索引的概念
索引就是加快檢索表中數(shù)據(jù)的方法。數(shù)據(jù)庫(kù)的索引類似于書(shū)籍的索引。在書(shū)籍中,索引允許用戶不必翻閱完整個(gè)書(shū)就能迅速地找到所需要的信息。在數(shù)據(jù)庫(kù)中,索引也允許數(shù)據(jù)庫(kù)程序迅速地找到表中的數(shù)據(jù),而不必掃描整個(gè)數(shù)據(jù)庫(kù)。
二、索引的特點(diǎn)
1.索引可以加快數(shù)據(jù)庫(kù)的檢索速度
2.索引降低了數(shù)據(jù)庫(kù)插入、修改、刪除等維護(hù)任務(wù)的速度
3.索引創(chuàng)建在表上,不能創(chuàng)建在視圖上
4.索引既可以直接創(chuàng)建,也可以間接創(chuàng)建
5.可以在優(yōu)化隱藏中,使用索引
6.使用查詢處理器執(zhí)行SQL語(yǔ)句,在一個(gè)表上,一次只能使用一個(gè)索引
7.其他
三、索引的優(yōu)點(diǎn)
1.創(chuàng)建唯一性索引,保證數(shù)據(jù)庫(kù)表中每一行數(shù)據(jù)的唯一性
2.大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因
3.加速表和表之間的連接,特別是在實(shí)現(xiàn)數(shù)據(jù)的參考完整性方面特別有意義。
4.在使用分組和排序子句進(jìn)行數(shù)據(jù)檢索時(shí),同樣可以顯著減少查詢中分組和排序的時(shí)間。
5.通過(guò)使用索引,可以在查詢的過(guò)程中使用優(yōu)化隱藏器,提高系統(tǒng)的性能。
?
ref: http://hi.baidu.com/453510260/blog/item/bc5c8626700b561d8b82a19c.html ?
數(shù)據(jù)庫(kù)基礎(chǔ):講解MySQL索引的概念及數(shù)據(jù)庫(kù)索引的應(yīng)用<>
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
