聚集索引和非聚集索引的區別

2021-06-04 21:10:41 字數 1063 閱讀 9382

聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致, 

聚集索引表記錄的排列順序與索引的排列順序一致,優點是查詢速度快,因為一旦具有第乙個索引值的紀錄被找到,具有連續索引值的記錄也一定物理的緊跟其後。 

聚集索引的缺點是對錶進行修改速度較慢,這是為了保持表中的記錄的物理順序與索引的順序一致,而把記錄插入到資料頁的相應位置,必須在資料頁中進行資料重排,降低了執行速度。 

建議使用聚集索引的場合為: 

a.此列包含有限數目的不同值; 

b.查詢的結果返回乙個區間的值; 

c.查詢的結果返回某值相同的大量結果集。 

非聚集索引指定了表中記錄的邏輯順序,但記錄的物理順序和索引的順序不一致,聚集索引和非聚集索引都採用了b+樹的結構,但非聚集索引的葉子層並不與實際的資料頁相重疊,而採用葉子層包含乙個指向表中的記錄在資料頁中的指標的方式。非聚集索引比聚集索引層次多,新增記錄不會引起資料順序的重組。 

建議使用非聚集索引的場合為: 

a.此列包含了大量數目不同的值; 

b.查詢的結束返回的是少量的結果集; 

c.order by 子句中使用了該列。 

--不用索引查詢 

select * from indextesttable whit(index(0)) 

where status='b' 

--建立聚集索引 

create clustered index icindextesttable 

on indextesttable(status) 

go --使用索引查詢 

select * from indextesttable with(index(icindextesttable)) 

where status='b' 

建了索引塊後 查詢的時候首先查詢索引塊 在查詢索引塊中的內容 

聚集索引的區別 

聚集索引:物理儲存按照索引排序 

非聚集索引:物理儲存不按照索引排序 

優勢與缺點 

聚集索引:插入資料時速度要慢(時間花費在「物理儲存的排序」上,也就是首先要找到位置然後插入),查詢資料比非聚集資料的速度快

聚集索引 和 非聚集索引區別

一.mysql的索引 mysql中,不同的儲存引擎對索引的實現方式不同,大致說下myisam和innodb兩種儲存引擎。myisam的b tree的葉子節點上的data,並不是資料本身,而是資料存放的位址。主索引和輔助索引沒啥區別,只是主索引中的key一定得是唯一的。這裡的索引都是非聚簇索引。myi...

聚集索引和非聚集索引區別

聚集索引 資料行的物理順序與列值 一般是主鍵那一列 的邏輯順序相同,乙個表只能擁有乙個聚集索引!非聚集索引 該索引中索引的邏輯順序與磁碟上行的物理順序不同乙個表可以擁有多個非聚集索引!非聚集索引可細分成普通索引,唯一索引,全文索引 區別 聚集索引 可以幫助把很大的範圍,迅速減小範圍。但是查詢該記錄,...

聚集索引和非聚集索引的區別

暫且摘錄如下 摘錄1 前者加在不常更新的表,後者加在經常更新的表 摘錄2 使用聚集索引 聚集索引確定表中資料的物理順序。聚集索引類似於 簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此乙個表只能包含乙個聚集索引。但該索引可以包含多個列 組合索引 就像 簿按姓氏和名字進行組織一樣...