程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 詳解SQL Server數據庫索引

詳解SQL Server數據庫索引

編輯:關於SqlServer

一、理解索引的結構

索引在數據庫中的作用類似於目錄在書籍中的作用,用來提高查找信息的速度。使用索引查找數據,無需對整表進行掃描,可以快速找到所需數據。微軟的SQL SERVER提供了兩種索引:聚集索引(clustered index,也稱聚類索引、簇集索引)和非聚集索引(nonclustered index,也稱非聚類索引、非簇集索引)。

SQL Server 中數據存儲的基本單位是頁(Page)。數據庫中的數據文件(.mdf 或 .ndf)分配的磁盤空間可以從邏輯上劃分成頁(從 0 到 n 連續編號)。磁盤 I/O 操作在頁級執行。也就是說,SQL Server 每次讀取或寫入數據的最少數據單位是數據頁。

下面我們先簡單的了解一下索引的體系結構:

1. 聚集索引結構

在 SQL Server 中,索引是按 B 樹結構進行組織的。

聚集索引單個分區中的結構:

--建立UserAddDate聚集索引

CREATE CLUSTERED INDEX [IX_UserAddDate] ON [ASPNet_zSurvey].[ZS_User]
(
[UserAddDate] ASC
)

聚集索引(Clustered Index)特點

聚集索引的葉節點就是實際的數據頁

聚集索引中的排序順序僅僅表示數據頁鏈在邏輯上是有序的。而不是按照順序物理的存儲在磁盤上

行的物理位置和行在索引中的位置是相同的

每個表只能有一個聚集索引

聚集索引的平均大小大約為表大小的5%左右

2.非聚集索引結構

非聚集索引與聚集索引具有相同的 B 樹結構,它們之間的顯著差別在於以下兩點:

1. 基礎表的數據行不按非聚集鍵的順序排序和存儲。

2. 非聚集索引的葉層是由索引頁而不是由數據頁組成。

下圖示意了單個分區中的非聚集索引結構:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved