聚集索引與非聚集索引理解

Mysql數據庫索引按照物理實現方式分類,索引可以分爲 2 種:聚集索引和非聚集索引。

通常也把非聚集索引稱爲二級索引或者輔助索引。
聚集索引可以按照主鍵來排序存儲數據,這樣在查找行的時候非常有效。
舉個例子,如果是一本新華字典,我們想要查找“好”這個字,直接在書中找漢語拼音的位置即可,也就是拼音“hao”。這樣找到了索引的位置,在它後面就是我們想要找的數據行。
非聚集索引不會把索引指向的內容像聚集索引一樣直接放到索引的後面,而是維護單獨的索引表(只維護索引,不維護索引指向的數據),爲數據檢索提供方便
我們還以新華字典爲例,如果想要查找“好”字,那麼按照部首查找的方式,先找到“好”字的偏旁部首,然後這個目錄會告訴我們“好”字存放到那一章節第多少頁,我們再去指定的頁碼找這個字。
也就是說系統會進行兩次查找,第一次先找到索引,第二次找到索引對應的位置取出數據行。

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

聚集索引與非聚集索引的原理不同,在使用上也有一些區別:

  1. 聚集索引的葉子節點存儲的就是具體的數據記錄,非聚集索引的葉子節點存儲的是數據位置。非聚集索引不會影響數據表的物理存儲順序。
  2. 一個表只能有一個聚集索引,因爲只能有一種排序存儲的方式,但可以有多個非聚集索引,也就是多個索引目錄提供數據檢索。
  3. 使用聚集索引的時候,數據的查詢效率高,但如果對數據進行插入,刪除,更新等操作,效率會比非聚集索引低。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章