NonClustered Index Seek好,還是Clustered Index Seek好呢?

NonClustered Index Seek好,還是Clustered Index Seek好呢?

之前在上課時,有聽過大師說索引的使用

Index Seek 優於 Clustered Index Seek。

我個人的解讀是如果一個Query需要table中的3個欄位

,而某一個Index剛好符合這一個Query需求,此時

使用這一個Index Seek是效能最好的,因為Clustered Index

的子葉層就是Table本身,所以用Clustered Index Seek到

資料的IO會比較高(讀所有欄位)。

但如果Query出來的筆數很少,例:Where id=1 這一種,那IO就沒差了。

 

下圖為實驗,應可以說明


Create Table indextest(id int identity,id1 int,id2 int,name nchar(100),name2 nchar(100))
go
CREATE UNIQUE CLUSTERED INDEX [Cluster_index] ON [dbo].[indextest]([id] ASC)
go
CREATE NONCLUSTERED INDEX [NonCluster_index] ON [dbo].[indextest]([id] ASC)include(id1,id2)
go
Insert Into indextest(id1,id2,name,name2) values(1,1,N'Rock',N'Rock')
go 1000


set statistics io on
select id,id1,id2 from indextest  with(index([Cluster_index])) where id <100
set statistics io off

go

set statistics io on
select id,id1,id2 from indextest with(index([NonCluster_index])) where id <100
set statistics io off

 

index

我是ROCK

rockchang@mails.fju.edu.tw