面试经典问题 InnoDB和MyISAM区别

2020-05-13  本文已影响0人  dongdog

相同点:

  1. 都是B+树的底层实现。

  2. WHERE条件都符合索引最左匹配原则。

不同点:

  1. MyISAM的存储文件有三个,frm、MYD、MYI 文件;InnoDB的存储文件就两个,frm、ibd文件。总文件大小InnoDB引擎占用空间更小。

  2. InnoDB的存储文件本身就是索引构成,建立新索引的时间比MyISAM快。

  3. MyISAM比InnoDB查询速度快,插入速度也快。

  4. 主键区间查询,InnoDB查询更快。字符串区间查询,MyISAM相对更快。

  5. 有A、AB、ABC索引的情况下,A OR B 查询,InnoDB查询性能比MyISAM慢。不建议使用OR 条件进行查询。

  6. InnoDB表没有命中到 A、B、C 索引最左原则时,BC组合查询命中了索引,但还是完全扫描,比全表扫描快些。MyISAM是全表扫描。

软件层面的优化一是合理加索引;二是优化执行慢的sql。
此二者相辅相成,缺一不可,如果加了索引,还是查询很慢,这时候就要考虑是sql的问题了,优化sql。
实际生产中的sql往往比较复杂,如果数据量过了百万,加了索引后效果还是不理想,使用集群、垂直或水平拆分。

上一篇下一篇

猜你喜欢

热点阅读