在MySQL 中,主要有四種類型的索引,分別為:B-Tree 索引,Hash 索引,Fulltext 索引和RTree索引 1、B-Tree 索引 B-Tree 索引是MySQL 資料庫中使用最為頻繁的索引類型,除了Archive 存儲引擎之外的其他所有的存儲引擎都支持B-Tree 索引。不僅僅在M ...
在MySQL 中,主要有四種類型的索引,分別為:B-Tree 索引,Hash 索引,Fulltext 索引和RTree索引 1、B-Tree 索引 B-Tree 索引是MySQL 資料庫中使用最為頻繁的索引類型,除了Archive 存儲引擎之外的其他所有的存儲引擎都支持B-Tree 索引。不僅僅在MySQL 中是如此,實際上在其他的很多資料庫管理系統中B-Tree 索引也同樣是作為最主要的索引類型,這主要是因為B-Tree 索引的存儲結構在資料庫的數據檢索中有非常優異的表現。 一般來說,MySQL 中的B-Tree 索引的物理文件大多都是以Balance Tree 的結構來存儲的,也就是所有實際需要的數據都存放於Tree 的Leaf Node,而且到任何一個Leaf Node 的最短路徑的長度都是完全相同的,所以我們大家都稱之為B-Tree 索引當然,可能各種資料庫(或MySQL 的各種存儲引擎)在存放自己的B-Tree 索引的時候會對存儲結構稍作改造。如Innodb 存儲引擎的B-Tree 索引實際使用的存儲結構實際上是B+Tree,也就是在B-Tree 數據結構的基礎上做了很小的改造,在每一個Leaf Node 上面出了存放索引鍵的相關信息之外,還存儲了指向與該Leaf Node 相鄰的後一個Leaf Node 的指針信息,這主要是為了加快檢索多個相鄰Leaf Node 的效率考慮。 在Innodb 存儲引擎中,存在兩種不同形式的索引,一種是Cluster 形式的主鍵索引(PrimaryKey),另外一種則是和其他存儲引擎(如MyISAM 存儲引擎)存放形式基本相同的普通B-Tree 索引,這種索引在Innodb 存儲引擎中被稱為Secondary Index。下麵我們通過圖示來針對這兩種索引的存放形式做一個比較。
