美文网首页
两个简单sql的效率差距

两个简单sql的效率差距

作者: lenny611 | 来源:发表于2021-06-22 16:44 被阅读0次

    表结构:


    image.png

    建立的索引语句为:

    alter table staffs add index idx_nap(name, age, pos);
    

    两个sql语句执行计划如下:

    image.png
    type
    type显示的是访问类型,访问类型表示我是以何种方式去访问我们的数据,最容易想的是全表扫描,直接暴力的遍历一张表去寻找需要的数据,效率非常低下,访问的类型有很多,效率从最好到最坏依次是:
    system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
    ref
    显示索引的哪一列被使用了,如果可能的话,是一个常数
    extra
    包含额外的信息。
    —————————————————————————————————————
    1.从type的类型可以看出 age>23的sql效率比pos>23的效率低下
    2.从ref可以看出age>23的ref为NULL而pos>23的ref为const
    3.从Extra可以看出两个语句都用了索引

    sql1:age>23
    这是因为走了最左前缀匹配原则,走的是name,age索引,name索引的type是ref,而age的索引的type是range,所以整个sql的tpye是range。
    sql2:pos>23
    只走了name索引,所以sql的type为ref,效率比sql1高。见下图即可


    image.png

    相关文章

      网友评论

          本文标题:两个简单sql的效率差距

          本文链接:https://www.haomeiwen.com/subject/zhkmyltx.html