- 一种有序的存储结构
- 按照单个或多个列的值进行排序
- 对应着一个 B+树
- 提升搜索效率
- where
- group by
- order by
- 没有 where/group by/order by
- 区分度不高的列
- 经常修改的列
- 数据量少
- 左模糊匹配
- 索引参与运算,使用函数、表达式运算、隐式转换
- where or 有非索引字段
- 不符合最左匹配原则
- B+树空间
- 维护 B+树的时间
- 非空唯一索引
- 一个表只有一个主键索引,primary key 修饰或者使用第一个非空唯一索引作为主键,或者自动生成主键
- 包含所有行信息
- 索引列不能出现重复值,可以有 null 值
- unique 修饰
- 只包含索引信息和主键信息
- 直接通过辅助索引就能获取全部要查询的数据,无需回表查询
- 在 select from 之间尽量列出所有需要的字段,如果字段恰好都在辅助索引 B+树中,就会使用覆盖索引
- 在索引的遍历过程中,对索引中包含字段先做判断,直接将不满足的数据行排除,从而减少回表的次数
- 通过把索引过滤条件下推到存储引擎,来减少 MySQL 存储引擎访问基表的次数以及 MySQL 服务层访问存储引擎的次数