聚集索引和非聚集索引

2021-06-27 10:44:53 字數 1443 閱讀 9526

聚集索引和非聚集索引:  【1

】聚集索引:

聚集索引,表中的資料儲存位置,根據索引的排序進行實際儲存,因此效率是相當高的。因為聚集索引決定了表中資料行的儲存位置。 乙個表不可能有兩個或以上的聚集索引,如果乙個表中已經有乙個聚集索引,那麼這個表中其他的索引都將是非聚集索引。

表排列順序:表記錄的排列順序與索引的排列順序一致。

查詢速度快:因為一旦具有第乙個索引值的紀錄被找到,具有連續索引值的記錄也一定物理的緊跟其後。

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

使用場合:

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

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

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

】非聚集索引

表排列順序:物理順序和索引的順序不一致

索引重組:非聚集索引比聚集索引層次多,新增記錄不會引起資料順序的重組

使用場合:

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

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

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

】舉例說明聚集索引和非聚集索引的區別

create clustered idx_name on table(name)

create idx_no on table(no)

表中實際的資料儲存方式為

table

no       name           remark

1         a

3         a

2         b

5         b

4         c        xxc1

6         c        xxc2

聚集索引資料頁

建值位址 健值 資料位址

0001    a     ***x

0002    b     ***x

0003    c     xxc1

非聚集索引資料頁

健值 聚集建值 聚集位址

1     a           0001

2     b           0002

3     a           0001

4     c           0003

5     b           0002

6     c           0003

select * from table where no =4

(1)先根據非聚集索引進行索引查詢,找到聚集健值c

(2)然後根據

c值,在聚集索引中查詢到資料位址

xxc1

(3)然後從

xxc1

開始比較

no = 4

的資料行,找後返回

聚集索引和非聚集索引

聚集索引和非聚集索引 一 聚集索引和非聚集索引 聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致,聚集索引表記錄的排列順序與索引的排列順序一致,優點是查詢速度快,因為一旦具有第乙個索引值的紀錄被找到,具有連續索引值的記錄也一定物理的緊跟其後。聚集索引的缺點是對錶進行修改速度...

聚集索引和非聚集索引

本文引自 一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序。聚集索引確定表中資料的物理順序。聚集索引類似於 簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此乙個表只能包含乙個聚集索引。但該索引可以包含多個列 組合索引 就像 簿按姓氏和名字進行組織一樣。聚集索引對於那些...

聚集索引和非聚集索引

聚集索引 物理儲存按照索引排序 非聚集索引 物理儲存不按照索引排序 聚集索引 物理儲存按照索引排序 非聚集索引 物理儲存不按照索引排序 優勢與缺點 聚集索引 插入資料時速度要慢 時間花費在 物理儲存的排序 上,也就是首先要找到位置然後插入 查詢資料比非聚集資料的速度快 漢語字典的正文本身就是乙個聚集...