• 关于MySQL回表,索引覆盖,最左匹配相关总结


    关于MySQL回表,索引覆盖,最左匹配相关总结

    1. 回表

    指的是在进行查询时,首先通过索引定位到对应页,然后再根据行的物理地址找到所需的数据行。换句话说,回表是指根据索引查询到的主键值,再去根据主键索引获取完整的数据记录。

    如:
    一张表: id,name, age, gender, address
    其中id主键,name普通索引;
    执行:

    select * from user where name = "牛马"
    
    • 1

    查询过程:
    首先根据name的值去name的B+树上查询,获取到对应的主键id,再根据id的值去id的B+树上去查询整行的记录,这个过程就称之为 回表,同时查找了两棵树;

    回表效率低,很多时候查询慢就是因为大量的回表操作。

    2. 索引覆盖

    覆盖索引是select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询的列要被所建的索引覆盖。

    如:
    一张表: id,name, age, gender, address
    其中id主键,name普通索引;
    执行:

    select id, name from user where name = "牛马"
    
    • 1

    查询过程:
    直接根据name的值去name的B+树上查找即可,因为name的B+树上包含了全部需要查询的信息,不需要回表。这也就是为什么平时都说不要使用 select * 的原因之一,因为如果查询命中合适的覆盖索引,那查询效率就会高很多。

    覆盖索引效率高,推荐使用,也是一种优化查询效率的手段;

    3. 最左匹配

    是指在联合索引中,如果你的 SQL 语句中用到了联合索引中的最左边的索引,那么这条 SQL 语句就可以利用这个联合索引去进行匹配。

    如:
    一张表: id,name, age, gender, address
    其中id主键,name,age和gender为联合索引;

    #这样可以利用到定义的索引(name,age,gender),用上name,age,gender
    select * from user where name="牛马" and age=1 and gender=1;     
    
    #这样可以利用到定义的索引(name,age,gender),用上name,age
    select * from user where name="牛马" and age=1;    
     
    #这样可以利用到定义的索引(name,age,gender),用上name,age(mysql有查询优化器)
    select * from user where age=1 and name="牛马";     
     
    #这样也可以利用到定义的索引(name,age,gender),用上name
    select * from user where name="牛马";     
    
    #这样不走索引(name,age,gender)
    select * from user where  age=1 and gender=1;      
     
    #这样可以利用到定义的索引(name,age,gender),但只用上name索引
    select * from user where name="牛马" and gender=1;     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    mybatis-plus,sgg,杨bochao,p5完成
    GPT-SoVITS音色克隆-模型训练步骤
    初始化项目骨架(Web3项目一实战之一)
    HQChart使用教程30-K线图如何对接第3方数据36--散点图
    第五章 MyBais插件
    自定义tabbar
    R语言向前或者向后移动时间序列数据(自定义滞后或者超前的期数):使用lag函数将时间序列数据向后移动一天(设置参数k为负值)
    RHCE习题整理
    QT雷达扫描图
    网站页脚展示备案号并在新标签页中打开超链接
  • 原文地址:https://blog.csdn.net/weixin_44958006/article/details/133621295