InnoDB的聚簇索引和非聚簇(普通)索引
聚簇索引又叫聚集索引,cluster index
聚簇索引的叶子节点存储行记录,因此InnoDB必须要有,且只有一个聚簇索引。
(1)如果表定义了PK,那么PK就是聚簇索引。
(2)如果表没有定义PK,那么第一个非空列就是聚簇索引。
(3)InnoDB会创建一个隐藏的row-id作为聚集索引
InnoDB普通索引存主键值,MyISAM的索引节点存储记录指针。
普通索引无法直接定位行记录,通常情况下,普通索引需要扫码两遍索引树,第一遍根据查询条件找到对应的主键,第二遍再主键进行聚集索引,返回符合索引条件的行。
什么是回表查询?
先根据普通索引定位到主键的值。
再根据聚集索引定位到行记录。
什么是索引覆盖(covering index)?
如何实现索引覆盖?
将查询的字段,建立到联合索引里面去。
MySQL分页查询优化