创建联合索引
修改表-创建索引
创建表-创建索引
创建结果:
Seq_in_index:表示该列在索引中的位置,如果索引是单列的,则该列的值为 1;如果索引是组合索引,则该列的值为每列在索引定义中的顺序。
这里decie_id在组合索引中的顺序是1,question_id在组合索引中的顺序是2
列在组合索引的顺序主要影响在排序和查询条件中
使用组合索引
where子句使用组合索引
where条件中索引列交换位置不会影响查询
2个条件都使用上,优化器可以自己调整顺序满足索引要求
根据最左原则,where条件只用了decie_id,组合索引不会失效
根据最左原则,where条件只用了question_id,组合索引失效
order语句使用组合索引
优化器默认采取全部扫描了,因为是查询出所有数据,所以全表扫描会比索引更快,节省回表的时间
如果是筛选部分数据,那么就会使用到索引而不会全表扫描
调整orderby字段的顺序之后,索引失效;所以当使用order by语句,确保与联合索引的顺序要一致
索引覆盖
where和order子句中使用组合索引
where条件只有where条件只用了decie_id,根据最左原则索引生效;实际只用了decie_id索引,order by使用索引生效
where条件只有where条件只用了decie_id,根据最左原则索引生效;但是decie_id使用>范围查找后,导致数据乱序,实际只用了decie_id索引
组合索引失效
标签:decie,组合,索引,顺序,mysql,where,id From: https://www.cnblogs.com/zhouzou/p/18325036where条件中有>=导致组合索引失效
最左原则匹配失败,组合索引失效