資料結構索引 InnoDB索引

2021-07-12 02:00:12 字數 753 閱讀 1766

我們知道,myisam索引檔案和資料檔案是分離的,索引檔案僅僅儲存了資料記錄的位址。

在innodb中,資料檔案本身就是索引檔案,表檔案本身就是乙個按照b+樹組織的乙個索引結構,葉節點data儲存了完整的資料記錄,這個索引的key是資料表的主鍵,因此innodb表資料檔案本身就是主索引。

上圖是innodb資料檔案(主索引)的示意圖,葉節點包含了所有的資料內容,這種告訴索引也叫做聚集索引。因為innodb本身按照主鍵聚集,所以如果我們在定義表結構的時候沒有定義主鍵,innodb會為該錶自動生成乙個大小為6個位元組的不會重複的值作為主索引的key。

innodb的副索引中葉子節點只存放了主索引的資料記錄的key值而不是位址,換句話說,innodb的所有輔助索引都引用主鍵作為data域

了解不同儲存引擎的索引實現方式對於正確使用和優化索引都非常有幫助,例如知道了innodb的索引實現後,就很容易明白為什麼不建議使用過長的字段作為主鍵,因為所有輔助索引都引用主索引,過長的主索引會令輔助索引變得過大。再例如,用非單調的字段作為主鍵在innodb中不是個好主意,因為innodb資料檔案本身是一顆b+tree,非單調的主鍵會造成在插入新記錄時資料檔案為了維持b+tree的特性而頻繁的**調整,十分低效,而使用自增字段作為主鍵則是乙個很好的選擇。

索引 資料結構

子元素比根元素大,放在右邊,反之亦然。如果資料從1開始遞增,依然使用二叉樹的話,二叉樹就會變成鍊錶結構 本質上是二叉樹,如果某一邊的子元素與另一邊的子元素相比超過二個,會發生自旋,一種平衡方式。也叫二叉平衡樹 在自增資料量很大的時候,樹的層數太高,查詢效率也會變低 葉節點具有相同的深度,葉節點的指標...

MySQL索引及索引資料結構

索引是幫助mysql高效獲取資料的排好序的資料結構 索引分類 索引失效的情況 模糊查詢時,第乙個查詢字元是不確定值 或 時,索引失效 select name from stu where name like e 索引失效 select name from stu where name like h ...

mysql索引資料結構 mysql索引資料結構

什麼是索引?索引就是排好序的資料結構,可以幫助我們快速的查詢到資料 幾種資料結構 二叉樹 如果資料是單邊增長的情況 那麼出現的就是和鍊錶一樣的資料結構了,樹高度大 紅黑樹 在二叉樹的基礎上多了樹平衡,也叫二叉平衡樹,不像二叉樹那樣極端的情況會往乙個方向發展。同樣我們查詢6,在二叉樹中我們需要經過6個...