(1)掌握SqlServer索引的基本概念

lishan發表於2019-05-11

先了解聚集索引的基本常識

索引的定義:索引是一種用於排序的搜尋的結構

表和索引的結構

(1)       頁和區:

1.       頁是儲存資料的基本單位(8kb),也是讀寫的最小i/o單位

2.       包含資訊:表、索引資料、分配點陣圖、可用空間資訊

3.       

注意:頁是sql server可以讀寫的最小i/o單位,即使只須訪問一行,sql server也要把整個頁載入到快取,再從快取中讀取資料

4.       區是由8個物理上連續的頁組成的單元

(2)       表的組織方式

1.       2種組織方式:堆、B

2.       堆:不含聚集索引的表

堆儲存資料是不按任何順序進行組織

可以通過掃描IAM 頁對堆進行表掃描或序列讀操作來找到容納該堆的頁的區


3.       聚集索引

3.1索引概述:索引是按 B 樹結構進行組織的。索引 B 樹中的每一頁稱為一個索引節點。B 樹的頂端節點稱為根節點。索引中的底層節點稱為葉節點。根節點與葉節點之間的任何索引級別統稱為中間級


3.2在聚集索引中,葉節點包含基礎表的資料頁。根節點和中間級節點包含存有索引行的索引頁

3.3每個索引行包含一個鍵值和一個指標,該指標指向 B 樹上的某一中間級頁或葉級索引中的某個資料行

3.4一個分割槽 就是一個B樹結構



4.       非聚集索引

4.1非聚集索引中的每個索引行都包含非聚集鍵值和行定位符。此定位符指向聚集索引或堆中包含該鍵值的資料行。

1)如果表是堆(意味著該表沒有聚集索引),則行定位器(row locator)是指向行的指標。該指標由檔案識別符號(file ID)、頁碼(page number)和頁上的行數(number of the row on the page)生成。整個指標稱為行 ID RID)。

2)如果表有聚集索引或索引檢視上有聚集索引,則行定位器是行的聚集索引鍵。如果聚集索引不是唯一的索引,SQL Server 將新增在內部生成的值(稱為唯一值)以使所有重複鍵唯一。此四位元組的值對於使用者不可見。僅當需要使聚集鍵唯一以用於非聚集索引中時,才新增該值。SQL Server 通過使用儲存在非聚集索引的葉行內的聚集索引鍵搜尋聚集索引來檢索資料行。


龐順龍最後編輯於:4年前

內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。

相關文章