首先先明確一點,兩者都是數據庫引擎。
並且都是用B+樹實現的,不懂B+樹的,先去補一下,知道思想就行。
數據庫的索引可以分為兩類,一種是主鍵索引,還有一種是普通索引(就是非主鍵列去建立索引)
MyISAM 索引
MyISAM 的索引和行記錄是分開的,相互獨立。稱為非聚集索引
並且主鍵索引和普通索引沒什麼區別,都是在索引(B+樹)的葉子結點,
存儲著值和一個對應的行引用id
ps:MyISAM的表可以沒有主鍵
索引搜索過程是 先通過索引值在索引樹上找到對應的引用,然後再去行記錄中查找。
InnoDB
InnoDB的主鍵索引和行記錄是存儲在一起的,稱為聚集索引
InnoDB的主鍵索引葉子節點記錄著主鍵和行記錄,普通索引葉子節點則記錄著列的值和主鍵。
通過普通列值進行查找的時候(where name="eric"),會先到普通索引找到對應的主鍵,
再去主鍵索引找到這條記錄,相當於掃描了兩個索引樹
建議,InnoDB的主鍵不要太過長,最好是用數據庫自增的id
原文地址: https://mp.weixin.qq.com/s/FUXPXKfKyjxAvMUFHZm9UQ
閱讀更多 上弦孤月c 的文章