• mysql索引之最左前缀法则


    1:最左前缀法则

      如果你的索引有多个字段,如图1所示,索引字段有 kq_time, card_no, kq_type这三个字段(最左前缀就是按这三个字段的前后顺序进行排序的)

     如果是三个查询条件中三个字段都用到了,如图二(严格按照最左前缀原则,查询条件顺序是使用了三个字段(kq_time,card_no,kq_type)

     这是图二是使用了全部索引,三个字段的索引都用到了,key_len的长度是165,看图三每个字段对应的长度,kq_time的类型是datetime长度是8,card_no的类型是varchar长度是50,kq_type的类型是varchar长度是1,所有总长度是8+(50*3+2)+(1*3+2)=165(这个值是预估值,有时候不准确,下面就会出现此情况),所以所有的索引都走了,索引长度计算看图三

     

    下面的图四,遵守了最左前缀原则,都走了部分索引kq_time(遵守了最左前段法则,查询条件顺序kq_time)

     再看图五,走了部分索引kq_time和card_no(遵守了最左前段法则,查询条件顺序kq_time和card_no)

    图六 (没有遵守最左前缀原则,查询条件跳过kq_time字段,使用了后面的两个字段,所有不走索引)

    图七(遵守了最左前缀原则,kq_time有了,后面没有card_no,直接使用了kq_type,所有索引只走了kq_time)

     

     在最后,总结一下什么最左前缀原则:查询从索引的最左前列开始并且不跳过索引中的列,通俗易懂的来说就是:带头大哥不能死、中间兄弟不能断

  • 相关阅读:
    使用集合组织相关数据
    深入类的方法
    深入C#数据类型
    上机练习1 更新会员积分
    魔兽争霸登录
    jQuery
    打卡系统
    [工具]kalilinux2016.2 更新后
    [技术分享]借用UAC完成的提权思路分享
    [技术分享]利用MSBuild制作msf免杀的后门
  • 原文地址:https://www.cnblogs.com/shuxiaosheng/p/12976922.html
Copyright © 2020-2023  润新知