zoukankan      html  css  js  c++  java
  • Mysql explain中key_len的作用及计算规则

    key_len表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在组合索引的时候,判断该索引有多少部分被使用到非常重要。

    在计算key_len时,下面是一些需要考虑的点:

    索引字段的附加信息:

    • 可以分为变长和定长数据类型讨论;
    • 当索引字段为定长数据类型时,如char,int,datetime,需要有是否为空的标记,这个标记占用1个字节(对于not null来说不需要这1个字节);
    • 当索引字段为变长数据类型时,如varchar,除了是否为空的标记外,还需要有长度信息,需要占用2个字节;
    • 对于char,varchar,blob,text等,key_len的长度还和字符集有关,latin1 一个字符占用1个字节,gbk 一个字符占用2个字节,utf8 一个字符占用3个字节.

    key_len的长度计算公式(key_len越小 索引效果越好):

    varchr(10)变长字段且允许NULL    =  10 * ( character set:utf8=3,gbk=2,latin1=1)+1(NULL)+2(变长字段)

    varchr(10)变长字段且不允许NULL =  10 *( character set:utf8=3,gbk=2,latin1=1)+2(变长字段)

    char(10)固定字段且允许NULL        =  10 * ( character set:utf8=3,gbk=2,latin1=1)+1(NULL)

    char(10)固定字段且不允许NULL     =  10 * ( character set:utf8=3,gbk=2,latin1=1)

    此外:

    bigint的长度是8 字节

    int 的长度是4 字节

    typeint的长度是1 字节

    smallint 长度是2 字节

    middleint长度是3 字节

  • 相关阅读:
    【模板】线段树(区间加)
    【模板】树状数组(区间修改+单点查询)
    【模板】并查集
    【模板】最小生成树
    LOJ #10130 点的距离
    【模板】最近公共祖先(LCA)
    【模板】树状数组
    【模板】堆
    LeetCode 242 Valid Anagram
    LeetCode 171 Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/zjfjava/p/13800428.html
Copyright © 2011-2022 走看看