MyISAM与InnoDB的区别

对比项 MyISAM InnoDB
外键 不支持 支持
事务 不支持 支持
行表锁 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 行锁,操作时只锁某一行,不对其它行有影响,
适合高并发的操作
缓存 只缓存索引,不缓存真实数据 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响

索引优化

数据结构:B+Tree(InnoDB是B+树)
  • 一般来说能够达到range就可以算是优化了 idx name_deptId

    口诀(两个法则加6种索引失效的情况)
  • 全值匹配我最爱,最左前缀要遵守;

  • 带头大哥不能死,中间兄弟不能断;
  • 索引列上少计算,范围之后全失效;
  • LIKE百分写最右,覆盖索引不写*;
  • 不等空值还有OR,索引影响要注意;
  • VAR引号不可丢,SQL优化有诀窍。

    b-tree和b+tree的区别

  • B-树的关键字、索引和记录是放在一起的, B+树的非叶子节点中只有关键字和指向下一个节点的索引,记录只放在叶子节点中。

  • 在B-树中,越靠近根节点的记录查找时间越快,只要找到关键字即可确定记录的存在;而B+树中每个记录的查找时间基本是一样的,都需要从根节点走到叶子节点,而且在叶子节点中还要再比较关键字。