MS SQL入門基礎 資料庫索引

2022-03-02 17:17:20 字數 1452 閱讀 5525

使用者對資料庫最頻繁的操作是進行資料查詢。一般情況下,資料庫在進行查詢操作時需要對整個表進行資料搜尋。當表中的資料很多時,搜尋資料就需要很長的時間,這就造成了伺服器的資源浪費。為了提高檢索資料的能力,資料庫引入了索引機制。本章將介紹索引的概念及其建立與管理。

8.1.1 索引的概念

索引是乙個單獨的、物理的資料庫結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的資料頁的邏輯指標清單。索引是依賴於表建立的,它提供了資料庫中編排表中資料的內部方法。乙個表的儲存是由兩部分組成的,一部分用來存放表的資料頁面,另一部分存放索引頁面。索引就存放在索引頁面上,通常,索引頁面相對於資料頁面來說小得多。當進行資料檢索時,系統先搜尋索引頁面,從中找到所需資料的指標,再直接通過指標從資料頁面中讀取資料。從某種程度上,可以把資料庫看作一本書,把索引看作書的目錄,通過目錄查詢書中的資訊,顯然較沒有目錄的書方便、快捷。

索引和關鍵字及約束有較大的聯絡。關鍵字可以分為兩類:一種是邏輯關鍵字,即在 「資料庫基礎章」節中介紹的;另一種是物理關鍵字,它用來定義索引的列,也即索引。

8.1.2 索引的結構

(1) 索引的b-樹結構

sql server 中的索引是以b-樹結構來維護的,如圖8-1 所示。b-樹是乙個多層次、自維護的結構。乙個b-樹包括乙個頂層,稱為根節點(root node);0 到多個中間層(intermediate);乙個底層(level 0),底層中包括若干葉子節點(leaf node)。在圖 8-1 中,每個方框代表乙個索引頁,索引列的寬度越大,b-樹的深度越深,即層次越多,

讀取記錄所要訪問的索引頁就越多。也就是說,資料查詢的效能將隨索引列層次數目的增加而降低。 圖8-1 索引的b-樹結構

在sql server 的資料庫中按儲存結構的不同將索引分為兩類:簇索引(clustered index)和非簇索引(nonclustered index)。

(2) 簇索引簇索引對錶的物理資料頁中的資料按列進行排序,然後再重新儲存到磁碟上,即簇索引與資料是混為一體,的它的葉節點中儲存的是實際的資料。由於簇索引對錶中的資料一一進行了排序,因此用簇索引查詢資料很快。但由於簇索引將表的所有資料完全重新排列了,它所需要的空間也就特別大,大概相當於表中資料所佔空間的120% 。表的資料行只能以一種排序方式儲存在磁碟上,所以乙個表只能有乙個簇索引。

(3) 非簇索引非簇索引具有與表的資料完全分離的結構,使用非簇索引不用將物理資料頁中的資料按列排序。非簇索引的葉節點中儲存了組成非簇索引的關鍵字的值和行定位器。行定位器的結構和儲存內容取決於資料的儲存方式。如果資料是以簇索引方式儲存的,則行定位器中儲存的是簇索引的索引鍵;如果資料不是以簇索引方式儲存的,這種方式又稱為堆儲存方式(heap structure),則行定位器儲存的是指向資料行的指標。非簇索引將行定位器按關鍵字的值用一定的方式排序,這個順序與表的行在資料頁中的排序是不匹配的。由於非簇索引使用索引頁儲存因此它比簇索引需要更多的儲存空間且檢索效率較低但乙個表只能建乙個簇索引,當使用者需要建立多個索引時就需要使用非簇索引了。從理論上講,乙個表最多可以建249 個非簇索引。

MS SQL入門基礎 移動資料庫

在sql server 中可以使用拆分 detach 和附加 attach 的方法來移動資料庫。拆分資料庫是從伺服器中移去邏輯資料庫,但不會將作業系統中的資料庫檔案刪除。附加資料庫將會建立乙個新的資料庫,並複製儲存在已有的資料庫檔案和事務日誌檔案中的資料。使用系統儲存過程sp detach db 來...

MS SQL入門基礎 壓縮資料庫

資料庫在使用一段時間後,時常會出現因資料刪除而造成資料庫中空閒空間太多的情況,這時就需要減少分配給資料庫檔案和事務日誌檔案的磁碟空間,以免浪費磁碟空間。當資料庫中沒有資料時,可以修改資料庫檔案屬性直接改變其占用空間,但當資料庫中有資料時,這樣做會破壞資料庫中的資料,因此需要使用壓縮的方式來縮減資料庫...

資料庫 索引基礎入門

索引就像是書的目錄,是與表或檢視關聯的磁碟上結構,可以加快從表或檢視中檢索行的速度。索引中包含由表或檢視中的一列或多列生成的鍵。這些鍵儲存在乙個結構 btree 中,使sql可以快速有效地查詢與鍵值關聯的行。建立索引的列可以保證行的唯一性,生成唯一的rowid 建立索引可以有效縮短資料的檢索時間 建...