首先看下所创表的结构:
然后按'最左前缀'的方法EXPLAIN这张表,如下:
毋庸置疑,好像没什么问题,那么现在看看下面两张图片:
。。。[PS衔接符号]。。。
即使没有按照'最左前缀'的方法,但是显示结果还是用了'KEY’,求解答。
select后面的列不影响索引的。where后面的条件id不是一直都在吗?。复合索引存在一个最左匹配原则,你可以看我的博客
第22.2.1 索引建立的几大原则。如果看完博客没有帮助,私信我。我好像没有理解你的具体问题,欢迎交流
复合索引,是这样的,只要保证按照复合索引创建的顺序使用,就没有问题啊。还有导致索引失效的情况有多种,自行了解,记住“排头兵不能倒,中间不能断”,这样就能保证索引不失效,自己体会吧
http://blog.csdn.net/albertfly/article/details/52515791
select 后面的列和索引没有关系,查询优化器是从where条件后面的,你的索引id, name, age 在查询顺序的时候使用了索引,因为where后面的id,name
顺序还是按照索引序列来的
索引的使用是根据where的条件列的顺序,与select选择的列的顺序无关
索引最左前缀是根据where 条件列后的字段来的,与select的字段无关