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

2021-04-13 05:44:40 字數 2241 閱讀 5110

暫且摘錄如下:

摘錄1:前者加在不常更新的表,後者加在經常更新的表

摘錄2:

使用聚集索引

聚集索引確定表中資料的物理順序。聚集索引類似於**簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此乙個表只能包含乙個聚集索引。但該索引可以包含多個列(組合索引),就像**簿按姓氏和名字進行組織一樣。

聚集索引對於那些經常要搜尋範圍值的列特別有效。使用聚集索引找到包含第乙個值的行後,便可以確保包含後續索引值的行在物理相鄰。例如,如果應用程式執行的乙個查詢經常檢索某一日期範圍內的記錄,則使用聚集索引可以迅速找到包含開始日期的行,然後檢索表中所有相鄰的行,直到到達結束日期。這樣有助於提高此類查詢的效能。同樣,如果對從表中檢索的資料進行排序時經常要用到某一列,則可以將該錶在該列上聚集(物理排序),避免每次查詢該列時都進行排序,從而節省成本。

當索引值唯一時,使用聚集索引查詢特定的行也很有效率。例如,使用唯一雇員   id   列   emp_id   查詢特定雇員的最快速的方法,是在   emp_id   列上建立聚集索引或   primary   key   約束

使用非聚集索引

非聚集索引與課本中的索引類似。資料儲存在乙個地方,索引儲存在另乙個地方,索引帶有指標指向資料的儲存位置。索引中的專案按索引鍵值的順序儲存,而表中的資訊按另一種順序儲存(這可以由聚集索引規定)。如果在表中未建立聚集索引,則無法保證這些行具有任何特定的順序。

與使用書中索引的方式相似,microsoft®   sql   server™   2000   在搜尋資料值時,先對非聚集索引進行搜尋,找到資料值在表中的位置,然後從該位置直接檢索資料。這使非聚集索引成為精確匹配查詢的最佳方法,因為索引包含描述查詢所搜尋的資料值在表中的精確位置的條目。如果基礎表使用聚集索引排序,則該位置為聚集鍵值;否則,該位置為包含行的檔案號、頁號和槽號的行   id   (rid)。例如,對於在   emp_id   列上有非聚集索引的表,如要搜尋其雇員   id   (emp_id),sql   server   會在索引中查詢這樣乙個條目,該條目精確列出匹配的   emp_id   列在表中的頁和行,然後直接轉到該頁該行。

摘錄3:

聚   簇縮影id號和實體地址   對應。

非的則不

摘錄4:

聚集索引就是將資料記錄直接儲存在此索引所建立的b+樹中。

非聚集索引則只在b+樹中儲存記錄的位置資訊。

--------------------------

摘錄5:

聚集索引:其中行的物理排序與索引排序相同,並且聚集索引的最低一級(葉級)包含實際的資料行。乙個表或檢視只允許同時有乙個聚集索引。

在建立任何非聚集索引之前建立聚集索引。建立聚集索引時重建表上現有的非聚集索引。

如果沒有指定 clustered,則建立非聚集索引。

------------------------------

摘錄6:

聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致,聚集索引表記錄的排列順序與索引的排列順序一致,優點是查詢速度快,因為一旦具有第乙個索引值的紀錄被找到,具有連續索引值的記錄也一定物理的緊跟其後。聚集索引的缺點是對錶進行修改速度較慢,這是為了保持表中的記錄的物理順序與索引的順序一致,而把記錄插入到資料頁的相應位置,必須在資料頁中進行資料重排,降低了執行速度。建議使用聚集索引的場合為:

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...

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

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

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

聚集索引和非聚集索引的區別 漢語字典的正文本身就是乙個聚集索引。比如,我們要查 安 字,就會很自然地翻開字典的前幾頁,因為 安 的拼音是 an 而按照拼音排序漢字的字典是以英文本母 a 開頭並以 z 結尾的,那麼 安 字就自然地排在字典的前部。如果您翻完了所有以 a 開頭的部分仍然找不到這個字,那麼...