主鍵索引:
我們知道InnoDB索引是聚集索引,它的索引和數據是存入同壹個.idb文件中的,因此它的索引結構是在同壹個樹節點中同時存放索引和數據。
在Innodb中,索引分葉子節點和非葉子節點,非葉子節點就像新華字典的目錄,單獨存放在索引段中,葉子節點則是順序排列的,在數據段中。Innodb的數據文件可以按照表來切分(只需要開啟innodb_file_per_table),切分後存放在xxx.ibd中,默認不切分,存放在xxx.ibdata中。
輔助(非主鍵)索引:
這次我們以示例中學生表中的name列建立輔助索引,它的索引結構跟主鍵索引的結構有很大差別,在最底層的葉子結點有兩行數據,第壹行的字符串是輔助索引,按照ASCII碼進行排序,第二行的整數是主鍵的值。
這就意味著,對name列進行條件搜索,需要兩個步驟:
① 在輔助索引上檢索name,到達其葉子節點獲取對應的主鍵;
② 使用主鍵在主索引上再進行對應的檢索操作
這也就是所謂的“回表查詢”