Mysql數(shù)據(jù)庫索引按照物理實現(xiàn)方式分類中贝,索引可以分為 2 種:聚集索引和非聚集索引囤捻。
通常也把非聚集索引稱為二級索引或者輔助索引。
聚集索引可以按照主鍵來排序存儲數(shù)據(jù)邻寿,這樣在查找行的時候非常有效蝎土。
舉個例子,如果是一本新華字典绣否,我們想要查找“好”這個字誊涯,直接在書中找漢語拼音的位置即可,也就是拼音“hao”枝秤。這樣找到了索引的位置醋拧,在它后面就是我們想要找的數(shù)據(jù)行。
非聚集索引不會把索引指向的內容像聚集索引一樣直接放到索引的后面,而是維護單獨的索引表(只維護索引丹壕,不維護索引指向的數(shù)據(jù))庆械,為數(shù)據(jù)檢索提供方便。
我們還以新華字典為例菌赖,如果想要查找“好”字缭乘,那么按照部首查找的方式,先找到“好”字的偏旁部首琉用,然后這個目錄會告訴我們“好”字存放到那一章節(jié)第多少頁堕绩,我們再去指定的頁碼找這個字。
也就是說系統(tǒng)會進行兩次查找邑时,第一次先找到索引奴紧,第二次找到索引對應的位置取出數(shù)據(jù)行。
聚集索引和非聚集索引二者的區(qū)別
聚集索引與非聚集索引的原理不同晶丘,在使用上也有一些區(qū)別:
- 聚集索引的葉子節(jié)點存儲的就是具體的數(shù)據(jù)記錄黍氮,非聚集索引的葉子節(jié)點存儲的是數(shù)據(jù)位置。非聚集索引不會影響數(shù)據(jù)表的物理存儲順序浅浮。
- 一個表只能有一個聚集索引沫浆,因為只能有一種排序存儲的方式,但可以有多個非聚集索引滚秩,也就是多個索引目錄提供數(shù)據(jù)檢索专执。
- 使用聚集索引的時候,數(shù)據(jù)的查詢效率高郁油,但如果對數(shù)據(jù)進行插入本股,刪除,更新等操作已艰,效率會比非聚集索引低痊末。