InnoDB 索引
数据和索引都存储在一个文件中(.ibd)
一般情况下,聚簇索引等同于主键索引;除 聚簇索引 外的所有索引 均称为 辅助索引
InnoDB(B+Tree)叶子节点中存储的键值为索引列的值
如果是聚簇索引,数据为整行记录(除了主键值)
如果是辅助索引,数据为该行的主键值
每一张表都有一个聚簇索引
如果表中有定义主键,主键索引用作聚簇索引
如果表中没有定义主键,选择第一个不为 NULL 的唯一索引列用作聚簇索引
如果以上都没有,使用一个 6 字节长整形的隐式字段 ROWID (自增)用作聚簇索引
根据在 辅助索引树 中获取的 主键id,再到 主键索引树 查询数据的过程 称为 回表 查询
组合索引
遵循 最左匹配(最左前缀)原则:
使用 组合索引 查询时,MySQL 会一直向右匹配直至遇到范围查询(>、<、between、like)就停止匹配。
只有第一列是有序的,其它列都是无序的(最左匹配原则的原因)