天天看點

myisam與innodb索引比較

  • MyISAM支援全文索引(FULLTEXT)、壓縮索引,InnoDB不支援
  • InnoDB支援事務,MyISAM不支援
  • MyISAM順序儲存資料,索引葉子節點儲存對應資料行位址,輔助索引很主鍵索引相差無幾;InnoDB主鍵節點同時儲存資料行(聚簇索引),其他輔助索引儲存的是主鍵索引的值
  • MyISAM鍵值分離,索引載入記憶體(key_buffer_size),資料緩存依賴作業系統;InnoDB鍵值一起儲存,索引與資料一起載入InnoDB緩沖池
  • MyISAM主鍵(唯一)索引按升序來存儲存儲,InnoDB則不一定
  • MyISAM索引的基數值(Cardinality,show index 指令可以看見)是精确的,InnoDB則是估計值。這裡涉及到資訊統計的知識,MyISAM統計資訊是儲存磁盤中,在alter表或Analyze table操作更新此資訊,而InnoDB則是在表第一次打開的時候估計值儲存在緩存區内
  • MyISAM處理字元串索引時用增量儲存的方式,如第一個索引是‘preform’,第二個是‘preformence’,則第二個儲存是‘7,ance‘,這個明顯的好處是縮短索引,但是缺陷就是不支援倒序提取索引,必須順序周遊擷取索引