扫码订阅《 》或入驻星球,即可阅读文章!

GOLANG ROADMAP

阅读模式

  • 沉浸
  • 自动
  • 日常
首页
Go学习
  • Go学院

    • Go小课
    • Go小考
    • Go实战
    • 精品课
  • Go宝典

    • 在线宝典
    • B站精选
    • 推荐图书
    • 精品博文
  • Go开源

    • Go仓库
    • Go月刊
  • Go下载

    • 视频资源
    • 文档资源
Go求职
  • 求职服务

    • 内推互助
    • 求职助力
  • 求职刷题

    • 企业题库
    • 面试宝典
    • 求职面经
Go友会
  • 城市
  • 校园
推广返利 🤑
实验区
  • Go周边
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
author-avatar

GOLANG ROADMAP


首页
Go学习
  • Go学院

    • Go小课
    • Go小考
    • Go实战
    • 精品课
  • Go宝典

    • 在线宝典
    • B站精选
    • 推荐图书
    • 精品博文
  • Go开源

    • Go仓库
    • Go月刊
  • Go下载

    • 视频资源
    • 文档资源
Go求职
  • 求职服务

    • 内推互助
    • 求职助力
  • 求职刷题

    • 企业题库
    • 面试宝典
    • 求职面经
Go友会
  • 城市
  • 校园
推广返利 🤑
实验区
  • Go周边
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
  • 面试宝典系列

    • MySQL面试题汇总
  • 宝典内容

    • 1.主键 超键 候选键 外键是什么?
    • 2.数据库事务的四个特性及含义?
    • 3.视图的作用,视图可以更改么?
    • 4.drop,delete与truncate的区别?
    • 5.索引的工作原理及其种类?
    • 6.连接的种类?
    • 7.数据库范式?
    • 8.数据库优化的思路?
    • 9.存储过程与触发器的区别
    • 10.解释 SQL 的 left join 和 right join?
    • 11.Mysql索引用的是什么算法?
    • 12.Mysql的存储引擎?
    • 13.Mysql事务隔离级别
    • 14.Mysql高可用方案有哪些?
    • 15.Mysql中utf8和utf8mb4区别?
    • 16.Mysql中乐观锁和悲观锁区别?
    • 17.Mysql索引主要是哪些?
    • 18.Mysql联合索引最左匹配原则?
    • 19.聚簇索引和非聚簇索引区别?
    • 20.如何查询一个字段是否命中了索引?
    • 21.Mysql中查询数据什么情况下不会命中索引?
    • 22.Mysql中的MVCC是什么?
    • 23.Mvcc和Redolog和Undolog以及Binlog有什么不同?
    • 24.Mysql读写分离以及主从同步?
    • 25.InnoDB的关键特性?
    • 26.Mysql如何保证一致性和持久性?
    • 27.为什么选择B+树作为索引结构?
    • 28.InnoDB的行锁模式?
    • 29.哈希(hash)比树(tree)更快,索引结构为什么要设计成树型?
    • 30.为什么索引的key长度不能太长?
    • 31.Mysql的数据如何恢复到任意时间点?
    • 32.Mysql为什么加了索引可以加快查询?
    • 33.Explain命令有什么用?

扫码订阅《 》或入驻星球,即可阅读文章!

18.Mysql联合索引最左匹配原则?


GOLANG ROADMAP
Mysql联合索引最左匹配原则?

最左前缀匹配原则:

  1. 在MySQL建立联合索引时会遵守最左前缀匹配原则,即最左优先.

在检索数据时从联合索引的最左边开始匹配,Mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配了.

就比如 a=3 and b=4 and c>5 and d=6如果建立(abcd)顺序的索引,d就用不到索引了,如果建立(abdc)的索引则都可以用到索引,其中abd的顺序可以任意调整,因为查询优化器会重新编排(即使是c>5 and b=4 and d=6 and a=3也会全部用到 abdc索引 ).

  1. =和in可以乱序,比如a=1 and b=2 and c=3 建立(abc)索引可以任意顺序,mysql查询优化器会优化顺序.

这里需要注意下, 比如abc索引 那么只要查询条件有a即可用到abc索引(如abc ab ac a),没有a就用不到。

最左前缀匹配成因:Mysql是创建复合索引的规则是根据索引最左边的字段进行排序,在第一个字段排序的基础上再进行第二个字段排序,类似于order by col1,col2… 所以第一个字段是绝对有序的 第二个字段就是无序的了,所以Mysql 强调最左前缀匹配.