MySQL 聚集索引 非聚集索引簡述

2021-08-28 08:03:45 字數 1368 閱讀 3799

mysql索引中可以分為聚集索引與非聚集索引兩類,在網路上也見過聚簇的說法,這裡先簡單介紹兩種索引的含義與適用場景。懶得畫圖,全是字。

索引的鍵值邏輯順序決定了表資料行的物理儲存順序,也就是在資料庫上連線的記錄在磁碟上的物理儲存位址也是相鄰的,注意這一點特性,我們可以分析出它的適用情況。由於聚集索引規定了資料項,也可以說是記錄在表中的物理儲存順序,物理順序唯一,自然每張表中的聚集索引也是唯一的,但是它可以包含多個列,多個字段。

聚集索引類似於新華字典中用拼音去查詢漢字,拼音檢索表於書記順序都是按照a~z排列的,就像相同的邏輯順序於物理順序一樣,當你需要查詢a,ai兩個讀音的字,或是想一次尋找多個傻(sha)的同音字時,也許向後翻幾頁,或緊接著下一行就得到結果了。

進一步來說,當你需要查詢的資料經常被分組看待(分類),或是經常查詢範圍性的資料(本月,本週總結),不同值的小數目等情況時,可以使用聚集索引。

自然,非聚集索引也就是儲存的鍵值邏輯連續,但是在表資料行物理儲存順序上不一定連續的索引,也就是索引的邏輯順序與磁碟上的物理儲存順序不同

非聚集索引類似在新華字典上通過偏旁部首來查詢漢字,檢索表也許是按照橫、豎、撇來排列的,但是由於正文中是a~z的拼音順序,所以就類似於邏輯位址於實體地址的不對應。同時適用的情況就在於分組,大數目的不同值,頻繁更新的列中,這些情況即不適合聚集索引。

某些情況下索引與物理儲存邏輯有關:

其中存在一種情況,mysql的myisam引擎b+樹式的儲存結構,把葉子結點上存放的並不是資料本身,而是存放資料的位址,所以在使用索引時,例如主索引、輔助索引有時達不到想要的效果,

雅思機經是什麼

而且都是非聚集索引。

主鍵不一定適合加上聚集索引,有時甚至是一種對這個唯一的聚集索引的浪費(雖然在sqlserver中主鍵預設為聚集索引),並非在任何欄位上加上聚集/非聚集索引都能提高查詢效率。下面我們結合實際情況分析。

優勢:

能夠保證資料每一行的唯一性

合理運用時加快資料的查詢速度

減少分組、排序等操作的查詢時間

優化查詢過程,提高系統效能

弊端:

建立、維護索引的時間會隨著資料量的增加而增加

自然,索引也是需要佔據物理空間的

增刪改查資料的時候,也會由於索引的存在而增加時間,類似於多了乙個屬性,也會降低表更新的速度

總而言之,這只是mysql查詢時優化速度等方面的冰山一角,還是需要多分析,多考慮,根據實際情況去選擇各種輔助功能的使用,才能得到相對最高的效率。

聚集索引 非聚集索引

通常情況下,建立索引是加快查詢速度的有效手段。但索引不是萬能的,靠索引並不能實現對所有資料的快速訪問。事實上,如果索引策略和資料檢索需求嚴重不符的話,建立索引反而會降低查詢效能。因此在實際使用當中,應該充分考慮到索引的開銷,包括磁碟空間的開銷及處理開銷 如資源競爭和加鎖 例如,如果資料頻繁的更新或刪...

MySQL聚集索引和非聚集索引

mysql的innodb儲存引擎的索引分為聚集索引和非聚集索引兩大類,理解聚集索引和非聚集索引可通過對比漢語字典的索引。漢語字典提供了兩類檢索漢字的方式,第一類是拼音檢索 前提是知道該漢字讀音 比如拼音為cheng的漢字排在拼音chang的漢字後面,根據拼音找到對應漢字的頁碼 因為按拼音排序,二分查...

聚集索引和非聚集索引

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