sqlserver 聚集索引和非聚集索引實例

參考文章:sqlserver 聚集索引和非聚集索引實例

數據庫:twt001

數據表:aclu

 

use twt001
go 

create table aclu 
( 
A int not null, 
B char(10), 
C varchar(10) 
) 
go 

insert into aclu 
select 1,'B','C' 
union 
select 5,'B','C' 
union 
select 7,'B','C' 
union 
select 9,'B','C' 
go

 

在aclu表上創建聚集索引

create clustered index CLU_ABC 
on aclu(A) 
GO 

 

查看索引

sp_helpIndex aclu


運行如下:

再次插入數據

insert into aclu
values(2,'B','C') 

因爲有聚集索引所以整個表的物理結構發生了變化,此時按照該索引查詢的內容爲:

select * from aclu WITH(index = CLU_ABC) WHERE A>1 AND A<5 


這一條記錄插入到了第一條記錄的後面,而不是整個表的最後:

 

刪除索引:

Drop index aclu.CLU_ABC

查詢內容物理順序還是按照順序的,跟上圖一樣。

 

在aclu表上創建非聚集索引

create nonclustered index NONCLU_ABC 
on aclu(A) 


查看索引


插入數據
insert into aclu
values(4,'B','C')

此時表內容如下:

因爲沒有聚集索引,所以整個表的物理結構沒有發生變化

以下查詢的內容爲:

select * from aclu WITH(index = NONCLU_ABC) 

 

刪除索引後
Drop index aclu.NONCLU_ABC

查詢內容物理順序是按照插入的順序

 

 

 


 



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章