zoukankan      html  css  js  c++  java
  • 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)

     

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

  • 相关阅读:
    php5调用web service
    经典SQL语句大全
    15个初学者必看的基础SQL查询语句
    MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解
    mysql update操作
    Oracle CASE WHEN 用法介绍
    日期时间格式正则表达式
    JS的事件监听机制
    JS 事件介绍
    c#格式化数字
  • 原文地址:https://www.cnblogs.com/shuxiaosheng/p/12976922.html
Copyright © 2011-2022 走看看