数据和索引是否在一起?
1. 主键索引的叶子节点存的是整行数据。 在InnoDB里, 主键索引也被称为聚簇索引(clustered
index) 。
2. 非主键索引的叶子节点内容是主键的值。 在InnoDB里, 非主键索引也被称为二级索引
(secondaryindex) 。
根据上面的索引结构说明, 我们来讨论一个问题: 基于主键索引和普通索引的查询有什么区别?
如果语句是select * from Twhere ID=500, 即主键查询方式, 则只需要搜索ID这棵B+树;
如果语句是select * from Twhere k=5, 即普通索引查询方式, 则需要先搜索k索引树, 得到ID
的值为500, 再到ID索引树搜索一次。 这个过程称为回表。
也就是说, 基于非主键索引的查询需要多扫描一棵索引树。 因此, 我们在应用中应该尽量使用主
键查询