写在前面,本文都是我亲自测试的结果,我根据结果进行的总结,对于原理不甚了解,请你们参考,也但愿懂的朋友在下面评论,告诉我缘由。mysql
索引状态:此时type有索引sql
sql: explain extended select * from y_user where type >0;
结果:mysql优化
可是,当我修改查询条件,测试
explain extended select * from y_user where type >1;
结果:优化
能够看到,使用了type索引。spa
索引状态:此时type有索引,nation未加索引code
sql: explain extended select * from y_user where type >0 and nation>0;
结果: 未使用任何索引索引
固然,修改条件,仍是会使用索引type的ip
索引状态:此时type有索引,nation有索引,同第2条。此外,修改查询条件,两个索引都有效时,选择过滤更多结果的索引。it
此外,组合索引有一个最左前缀原则,也就是说若是组合索引为 a_b_c,那么查询时的只要出现了a或者a,b,或者abc均可以使用改组合索引。可是,不能没有a查询条件,也就是说最左前缀的意思是查询条件必定要包含
组合索引最左边的元素,而不是说查询条件必须按照组合索引的组合顺序进行查找。