MyISAM和InnoDB的索引在实现上的不同
1 MyISAM只把索引載入內存,數據緩存依賴于操作系統,InnoDB把索引和數據都載入內存緩沖?
2 MyISAM數據庫中的數據是按照插入的順序保存,在每個索引節點中保存對應的數據行的地址,理論上說主鍵索引和其他索引是一樣的,InnoDB數據庫中的數據和主鍵節點保存在一起,所有其他索引節點中保存的是主鍵索引的值。?
3 對于字符串索引,MyISAM默認采用增量保存,例如第一個索引值是'perform',第二個索引的值是'performance', 在索引文件中第二個索引被保存為'7,ance'。這樣能夠減小索引的尺寸。?
4 MyISAM保存索引的狀態信息在磁盤里,每次執行ANALYZE TABLE會更新這個信息。InnoDB則通過在啟動的時候隨機讀取索引來估計索引的狀態信息,所以Show Index的結果對于MyISAM是精準的,但對于InnoDB不是絕對精準。?
5 索引長期運行之后會產生碎片,一種碎片是一行數據被保存在不同的數據段,另一種是連續的表空間或行在磁盤上被分散地保存。對于MyISAM兩種索引碎片都 會出現,對于InnoDB只會出現后一種因為InnoDB不會把短行保存到不同的數據段。要消除索引碎片一種方法是OPTIMIZE TABLE,另一種方法是把數據重新倒入。?
針對MyISAM和InnoDB不同的索引結構,要注意以下幾點:?
1 在InnoDB表中插入數據一定要盡可能按照主鍵增加的順序,AUTO_INCREMENT最好,這樣插入的速度最快?
2 因為InnoDB索引節點中保存的是主鍵的值,所以主鍵的值越簡單越好?
3 對于InnoDB表,在查詢的時候如果只需要查找索引列,就不要加入其它列,這樣速度最快。
轉載于:https://www.cnblogs.com/kabi/p/5897514.html
總結
以上是生活随笔為你收集整理的MyISAM和InnoDB的索引在实现上的不同的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c3p0连接池
- 下一篇: SpringMVC框架介绍