SQL Server 的索引結構實例
阿新 • • 發佈:2017-11-12
strong insert add http person border blog ace use
目前SQL Server 的索引結構如下:
這個是聚集索引的存放形式:
非聚集索引的方式如下:
它們是以B+樹的數據結構存放的。
相信大家都看過類似的圖,但是沒有直觀的認識,下面舉一個實際的例子來說明圖的結構。
1 2 3 4 5 6 7 8 9 10 11 |
USE Test
--1.創建表,指定主鍵(會自動創建聚集索引)
CREATE TABLE Person
(
Id int NOT NULL IDENTITY,
Name varchar (10) NOT NULL ,
Sex varchar (2) NOT NULL ,
CONSTRAINT PK_Person PRIMARY KEY (Id)
);
--2.創建非聚集索引
CREATE INDEX idx_Person_Sex ON Person(Sex);
|
1 2 3 4 |
--3.插入1筆數據
Insert Person values ( ‘P0‘ , ‘M‘ );
--4.查看表有哪些頁
DBCC ind ( Test, [dbo.Person], -1)
|
1 2 3 4 |
--5. 打開3604監控 DBCC TraceON(3604,-1)
--6.查看聚集索引葉子節點頁的數據
DBCC PAGE (Test,1,174, 1);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
--7.插入1000條M和500條W記錄
SET NOCOUNT ON ;
GO
DECLARE @i int ;
SET @i = 1000;
WHILE @i < 2000
BEGIN
Insert Person values ( ‘P‘ + convert ( varchar (10),@i), ‘M‘ );
SET @i = @i + 1;
END ;
DECLARE @i int ;
SET @i = 2000;
WHILE @i < 2500
BEGIN
Insert Person values ( ‘P‘ + convert ( varchar (10),@i), ‘W‘ );
SET @i = @i + 1;
END ;
GO
--8.查看表有哪些頁
DBCC ind ( Test, [dbo.Person], -1)
|
1 2 |
--9.查看聚集索引頁的數據
DBCC PAGE (Test,1,209, 3);
|
1 2 |
--10.查看非聚集索引頁的數據
DBCC PAGE (Test,1,189, 3);
|
Index 的總結:
一個Index 可以有多個Page
Index 是以B+樹結構存放的,其中分支節點的信息是存在一個Page中,而葉子節點存放在其他Page 。
SQL Server 的索引結構實例