一列的索引称为单列索引,多列的称为复合索引,因为BTREE索引是顺序排列的,所以比较适合范围查询,但是在复合索引中,还应注意列数目、列的顺序以及前面范围查询的列对后边列的影响。
添加三列的复合索引
alter table staffs add index idx_nap(name, age, pos);
- 全值匹配
如select * from staffs where name = 'July' and age = '23' and pos = 'dev'
- 匹配最左列
如select * from staffs where name = ‘July’ and age = ‘23’,key字段显示用到了索引,注意,key_len字段(表示本次语句使用的索引长度)数值比上一条小了,意思是它并未使用全部索引列,事实上只用到了name和age列
- 匹配列前缀
- 匹配范围
- 精确匹配一列并范围匹配右侧相邻列
.6 只访问索引的查询