1)innodb的資料檔案本身就是索引檔案。從上文知道,myisam索引檔案
是分離的,索引檔案僅儲存資料記錄的位址。而在innodb中,表資料
檔案本身就是按b+tree組織的乙個索引結構,這棵樹的葉節點data域
儲存了完整的資料記錄,這個索引的key是資料表的主鍵,因此innodb
表資料檔案本身就是主索引。
innodb的葉節點包含所以的資料記錄,這種索引叫做聚集索引。因為
innodb資料檔案本身按主鍵聚集,所以innodb要求必須要有主鍵,如
果沒有顯示指定,則mysql系統會自動選擇乙個可以唯一標識記錄的列
作為主鍵,如果不存在這種列,則mysql自動為innodb自動為表生成一
個隱含字段作為主鍵,這個字段長度為6個位元組,型別為長整型
2)innodb輔助索引data域儲存相應記錄主鍵的值而不是位址,換句話
說,innodb所有輔助索引都引用主鍵作為data域。
3)聚集索引的這種方式使得按主鍵的搜尋十分搞笑,但是輔助索引搜尋
需要檢查兩邊索引,首先檢查輔助索引獲得主鍵,然後用主鍵到主索引中獲得
記錄。
innodb索引實現原理
首先,我們來看一下簡單的查詢,我們首先想到的是全盤掃瞄,但是在這種方法下,效率是很低的。這個時候,我們發現在頁 mysql管理儲存空間的基本單位 的七個組成部分中 file helper 用來記錄頁的上下文,page helper 資料也的儲存狀態,比如一共有多少條資料,槽,第一條的位址是什麼,in...
MyISAM和InnoDB索引實現對比
myisam引擎使用b tree作為索引結構,葉節點的data域存放的是資料記錄的位址。如圖 這裡設表一共有三列,假設我們以col1為主鍵,則上圖是乙個myisam表的主索引 primary key 示意。可以看出myisam的索引檔案僅僅儲存資料記錄的位址。在myisam中,主索引和輔助索引 se...
MyISAM和InnoDB的索引實現
在 mysql 中,主要有四種型別的索引,分別為 b tree 索引,hash 索引,fulltext 索引和 r tree 索引。我們主要分析b tree 索引。b tree 索引是 mysql 資料庫中使用最為頻繁的索引型別,除了 archive 儲存引擎之外的其他所有的儲存引擎都支援 b tr...