索引模型
索引有很多种存储结构, 称之为索引模型, 不同类型的模型分别对应不同的适用场景.
哈希表
哈希表是一种以键值对存储数据的结构 KEY - VALUE....由于普通索引的叶子节点存储的是主键, 那么很显然, 主键长度越小越好, 所以自增主键是一个很好的选择.
当然, 如果你自己有业务字段是唯一的, 且不需要其他索引, 那么使用业务字段来做主键会适合....如现在我们有 (name, age) 这个联合索引 :
image.png
可以看到, 索引已经按照定义中的顺序排序好了, name 在前, age 在后, 如果 name 一致, 按照 age 排序...在 MySQL 5.6 之前, 只能从 ID3 开始一个一个的回表, 到主键索引上找出数据行, 再比对字段值....而在 MySQL 5.6 引入了索引下推优化, 即在索引遍历过程中, 对索引中包含的字段先做判断, 先过滤到不符合条件的记录, 避免回表:
无索引下推执行流程:
image.png
有索引下推执行流程