Vincent_Xupt
ZeroTrust
采纳率75%
2018-01-28 09:46

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

5
已采纳

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • thinking_fioa thinking_fioa 3年前

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

    点赞 1 评论 复制链接分享
  • caigen8 caigen8 3年前

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

    点赞 1 评论 复制链接分享
  • Jackie_gdut Jackie 仔 3年前

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

    点赞 1 评论 复制链接分享
  • love_shenling love_shenling 3年前

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

    点赞 1 评论 复制链接分享
  • fanchubo1 fchunbo 3年前

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

    点赞 1 评论 复制链接分享
  • devmiao devmiao 3年前

相关推荐