InnoDB是聚集索引方式,因此數據和索引都存儲在同一個文件里。
首先InnoDB會根據主鍵ID作為KEY建立索引B+樹,如左下圖所示,而B+樹的葉子節點存儲的是主鍵ID對應的數據
比如在執行select * from user_info where id=15這個語句時
InnoDB就會查詢這顆主鍵ID索引B+樹,找到對應的user_name='Bob'。
這是建表的時候InnoDB就會自動建立好主鍵ID索引樹,這也是為什么MySQL在建表時要求必須指定主鍵的原因。
當我們為表里某個字段加索引時InnoDB會怎么建立索引樹呢?
比如我們要給user_name這個字段加索引,那么InnoDB就會建立user_name索引B+樹,節點里存的是user_name這個KEY,葉子節點存儲的數據的是主鍵KEY。注意,葉子存儲的是主鍵KEY!
拿到主鍵KEY后,InnoDB才會去主鍵索引樹里根據剛在user_name索引樹找到的主鍵KEY查找到對應的數據。

