1.什么时候适用索引?
- 字段有唯一限制,比如商品编码
- 经常用于where查询条件的字段
- 经常用于group by和order by 的字段
2.什么时候不需要创建索引?
- 字段中存在大量重复
- 经常更新的字段
- 表数据太少的时候
where条件、group by,order by里用不到的字段
3.有什么优化索引的方法?
- 前缀索引优化
- 覆盖索引优化
- 主键索引最好是自增的
- 防止索引失效
4.什么时候索引会失效?
- 使用左或者左右模糊匹配的时候
- 在查询条件中对索引列做计算、函数、类型转换操作
- 联合索引没有遵循最左匹配原则
- 在where子句中,如果or前条件是索引列,or后条件不是索引列,索引会失效
5.为什么MySQL InnoDB选择B+tree作为索引的数据结构?
最主要原因:存储相同数量级别的情况下,B+Tree树高比B Tree低,磁盘I/O次数更少
B+Tree叶子节点使用双向链表串起来,适合范围查询