回表查询
mysql innodb索引分为两类:聚集索引和普通索引
(1)如果表定义了primaryKey,则primaryKey就是聚集索引;
(2)如果表没有定义primaryKey,则第一个not null uk列是聚集索引;
(3)否则,InnoDB会创建一个隐藏的row-id作为聚集索引。
B+树索引的叶子节点存储数据,那这两类索引的叶子节点具体是存储了啥子玩意呢?
聚集索引: 存的是数据行,通过聚集索引我们可以在这个索引树上得到所要的数据行;
普通索引: 存的是聚集索引的值;
聚集索引的效率非常高;
普通索引查到聚集索引的值后 需要 再查询聚集索引,也就是需要扫两次索引树。
索引覆盖
查询执行计划 explain xx ; 有个extra 字段 using index
1.单列索引 和聚集索引(主键)建联合索引,避免回表;