聚集索引和非聚集索引

2021-10-04 07:00:28 字數 1077 閱讀 8591

索引簡介

索引是關係型資料庫中給資料庫表中一列或多列的值排序後的儲存結構,sql的主流索引結構有b+樹以及hash結構,聚集索引以及非聚集索引用的是b+樹索引。

sql sever索引型別有:唯一索引,主鍵索引,聚集索引,非聚集索引。

mysql 索引型別有:唯一索引,主鍵(聚集)索引,非聚集索引,全文索引。

聚集索引

聚集(clustered)索引,也叫聚簇索引。

定義:資料行的物理順序與列值(一般是主鍵的那一列)的邏輯順序相同,乙個表中只能擁有乙個聚集索引。

單單從定義來看是不是顯得有點抽象,打個比方,乙個表就像是我們以前用的新華字典,聚集索引就像是拼音目錄,而每個字存放的頁碼就是我們的資料實體地址,我們如果要查詢乙個「哇」字,我們只需要查詢「哇」字對應在新華字典拼音目錄對應的頁碼,就可以查詢到對應的「哇」字所在的位置,而拼音目錄對應的a-z的字順序,和新華字典實際儲存的字的順序a-z也是一樣的,如果我們中文新出了乙個字,拼音開頭第乙個是b,那麼他插入的時候也要按照拼音目錄順序插入到a字的後面。

非聚集(unclustered)索引

定義:該索引中索引的邏輯順序與磁碟上行的物理儲存順序不同,乙個表中可以擁有多個非聚集索引。

其實按照定義,除了聚集索引以外的索引都是非聚集索引,只是人們想細分一下非聚集索引,分成普通索引,唯一索引,全文索引。如果非要把非聚集索引模擬成現實生活中的東西,那麼非聚集索引就像新華字典的偏旁字典,他結構順序與實際存放順序不一定一致。

使用聚集索引的查詢效率要比非聚集索引的效率要高,但是如果需要頻繁去改變聚集索引的值,寫入效能並不高,因為需要移動對應資料的物理位置。

非聚集索引在查詢的時候可以的話就避免二次查詢,這樣效能會大幅提公升。

不是所有的表都適合建立索引,只有資料量大表才適合建立索引,且建立在選擇性高的列上面效能會更好。

聚集索引和非聚集索引

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

聚集索引和非聚集索引

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

聚集索引和非聚集索引

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