索引匹配方式:
如果设置的索引是 name,age,pos。
1:全值匹配
全值匹配指的是和索引中的所有列进行匹配
explain select * from staffs where name = 'July' and age = '23' and pos = 'dev';
2:匹配最左前缀
只匹配前面的几列(只能按照顺序索引,顺序必须是 name,age,pos,如果where按照 pos,name,age将不能执行索引查询)
explain select * from staffs where name = 'July' and age = '23';
explain select * from staffs where name = 'July';
3:匹配列前缀 (这样查询虽然用到索引了但是相比于全职匹配速度还是慢)
可以匹配某一列的值的开头部分
explain select * from staffs where name like 'J%';
explain select * from staffs where name like '%y';
4:匹配范围值(因为第一个是name,之后的匹配都不算索引)
可以查找某一个范围的数据
explain select * from staffs where name > 'Mary';
5:精确匹配某一列并范围匹配另外一列
可以查询第一列的全部和第二列的部分
explain select * from staffs where name = 'July' and age > 25;
覆盖索引:
就是 select name ,pos from staffs where name = 'July' and age = '23' and pos = 'dev'; 这就是覆盖索引,设置的索引是 name,age,pos, 我查询的数据,为name,和pos, 设置了索引,查询的时候不需要回标了。