1. 索引分类
从索引字段特性角度分类
- 主键索引
- 唯一索引
- 普通索引
- 前缀索引(这个不懂)
- (全文索引,这个基本用不到)
从组成索引的字段个数角度分类
- 单列索引
- 联合索引(复合索引)
参考:https://zhuanlan.zhihu.com/p/338629505
2. 联合索引概念
对于多个字段的联合索引,如 index(a,b,c) 联合索引,则相当于创建了 a 单列索引,(a,b)联合索引,和(a,b,c)联合索引。
3. explain
:SQL语句分析器
-
如何使用?
sql语句前加explain
与索引有关的主要是possible_keys,key,key_len这三项,possible_keys是指可能会用到的索引,key是当前sql使用到的索引,key_len是索引的使用字节数(多列索引根据key_len判断用到了哪些索引)。
4. 多列索引失效情况(最左前缀匹配原则):
- mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的。
- 但是如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整(MySQL查询优化)。
参考:https://blog.csdn.net/wdjxxl/article/details/79790421