美文网首页
索引最左前缀匹配

索引最左前缀匹配

作者: 数据100 | 来源:发表于2020-05-25 13:55 被阅读0次

    最左前缀原理


    联合索引中查找遵循最左前缀原理:
    例如,建立如下(a,b,c,d)的联合索引,索引结构会按照a,b,c,d的顺序依次排序建立索引。
    输入查询条件:a,b,c,d 可以全部利用索引
    输入查询条件:a,b,d 仅可以利用a,b部分索引
    输入查询条件:b,c,d 无法利用索引
    输入查询条件包括范围查询时,范围列可以用到索引,范围列后面的无法用到索引。
    查询条件有函数或表达式时不会用到索引,比如left(String)。
    查询条件中字符串为Like匹配时:“abcd%”可以用到索引。

    索引选择性


    索引的选择性较低时不建议建索引。
    所谓索引的选择性(Selectivity),是指不重复的索引值(也叫基数,Cardinality)与表记录数(#T)的比值:
    Index Selectivity = Cardinality / #T:

    主键优化


    在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键。
    InnoDB使用聚集索引,数据记录本身被存于主索引(一颗B+Tree)的叶子节点上。这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键顺序存放,因此每当有一条新的记录插入时,MySQL会根据其主键将其插入适当的节点和位置,如果页面达到装载因子(InnoDB默认为15/16),则开辟一个新的页(节点)。
    如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页。这样就会形成一个紧凑的索引结构,近似顺序填满。由于每次插入时也不需要移动已有数据,因此效率很高,也不会增加很多开销在维护索引上。

    相关文章

      网友评论

          本文标题:索引最左前缀匹配

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