Vincent_Xupt
ZeroTrust
2018-01-28 09:46
采纳率: 75%
浏览 1.6k

MYSQL数据库组合索引的'最左前缀'问题!

首先看下所创表的结构:
图片说明
然后按'最左前缀'的方法EXPLAIN这张表,如下:
图片说明
毋庸置疑,好像没什么问题,那么现在看看下面两张图片:
图片说明
。。。[PS衔接符号]。。。
图片说明
即使没有按照'最左前缀'的方法,但是显示结果还是用了'KEY’,求解答。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • thinking_fioa
    thinking_fioa 2018-01-28 13:56
    已采纳

    select后面的列不影响索引的。where后面的条件id不是一直都在吗?。复合索引存在一个最左匹配原则,你可以看我的博客
    第22.2.1 索引建立的几大原则。如果看完博客没有帮助,私信我。我好像没有理解你的具体问题,欢迎交流

    点赞 评论
  • fanchubo1
    fchunbo 2018-01-28 10:37

    复合索引,是这样的,只要保证按照复合索引创建的顺序使用,就没有问题啊。还有导致索引失效的情况有多种,自行了解,记住“排头兵不能倒,中间不能断”,这样就能保证索引不失效,自己体会吧

    点赞 评论
  • devmiao
    devmiao 2018-01-28 15:04
    点赞 评论
  • love_shenling
    love_shenling 2018-01-29 08:21

    select 后面的列和索引没有关系,查询优化器是从where条件后面的,你的索引id, name, age 在查询顺序的时候使用了索引,因为where后面的id,name
    顺序还是按照索引序列来的

    点赞 评论
  • Jackie_gdut
    Jackie 仔 2018-01-29 09:37

    索引的使用是根据where的条件列的顺序,与select选择的列的顺序无关

    点赞 评论
  • caigen8
    caigen8 2018-01-30 09:14

    索引最左前缀是根据where 条件列后的字段来的,与select的字段无关

    点赞 评论

相关推荐