Mysql 知识点记录
MySQL 刘宇帅 6年前 阅读量: 1275
- InnoDB MyISAM都是使用B-tree索引,只是两者实现方式不太一样,InnoDB 使用了聚簇索引的数据结构也称为B+tree,而MyISAM并没有。
- explain 返回的 Extra 中包含 Using index 即表示使用索引覆盖查询(InnoDb、MyISAM都存在)。
- explain 放回的 Extra 中包含 Using where是即表明在存储引擎把数据返回给 MySQL 服务器后再应用 Where 里的条件过滤行。这样就会导致存储引擎返回的数据比实际需要的多,就会导致额外的行被锁。
- InnoDB索引中,覆盖查询要考虑主键的情况,即使索引中不包含主键,而查询包含索引中的字段和主键时也是覆盖查询,因为二级索引中主键的值。
- InnoDB 使用的是B+tree数据结构。
- MyISAM 通过数据的物理位置引用被索引的行。MyISAM 的主键而二级索引实际上是一样的。
- InnoDB 主键时聚簇索引,主键索引即使索引也是数据存储结构,行数据存在主键索引的叶子节点上。二级索引叶子节点的值是主键索引。所以如果查询行数据需要两次索引,先索引二级索引再去查询主索引(覆盖索引的情况除外)。
- InnoDB 包含一个自适应哈希索引,存储引擎会在访问比较频繁的索引值上生成哈希索引,提高性能。