天天看點

MyISAM主鍵索引樹和二級索引樹

MyISAM:資料和索引沒有放在一塊,叫做 非聚集索引,不可能回表

InnoDB:資料和索引存放在一塊,叫聚集索引 ,會涉及回表

此時假設一個場景:uid是主鍵,有主鍵索引樹,name有索引,建立二級索引樹

MyISAM主鍵索引樹和二級索引樹

目前場景下的主鍵索引樹如下,B+樹非葉子節點上隻有索引值,葉子節點上有索引值和資料位址

MyISAM主鍵索引樹和二級索引樹

MyISAM索引樹原理圖如下:

MyISAM主鍵索引樹和二級索引樹

目前場景下的二級索引樹如下:

InnoDB二級索引樹葉子節點上是主鍵值uid,而MyISAM存的則是資料的位址
MyISAM主鍵索引樹和二級索引樹

目前場景下,主鍵索引樹和二級索引樹兩者之間的聯系:

MyISAM主鍵索引樹和二級索引樹

在MyISAM中,主索引和輔助索引(Secondary key)在結構上沒有任何差別,隻是主索引要求key是唯一的,而輔助索引的key可以重複,MyISAM二級索引樹結構圖如下:

MyISAM主鍵索引樹和二級索引樹

目前場景下,若使用MyISAM存儲引擎查找資料,以name作為索引,到二級索引樹上查找結果(構造索引樹的過程也涉及磁盤I/O),如果指定的Key存在,則取出其data域的值,然後以data域的值為位址,讀取相應資料記錄。

  1. ​​448-MySQL(MyISAM主索引樹,二級索引樹)​​
  2. ​​MySQL的MyISAM與InnoDB的索引方式​​