zoukankan      html  css  js  c++  java
  • mysql explain中key_len的计算

    ken_len表示索引使用的字节数,根据这个值,就可以判断索引使用情况,特别是在组合索引的时候,判断是否所有的索引字段都被查询用到。

    key_len显示了条件检索子句需要的索引长度,但 ORDER BY、GROUP BY 子句用到的索引则不计入 key_len 统计值;

    关于 key_len 的计算规则:

    • 当索引字段为定长数据类型,比如:char,int,datetime,需要有是否为空的标记,这个标记需要占用1个字节;
    • 当索引字段为变长数据类型,比如:varchar,除了是否为空的标记外,还需要有长度信息,需要占用2个字节;
    • 当字段定义为非空的时候,是否为空的标记将不占用字节;
    • 同时还需要考虑表所使用字符集的差异,latin1编码一个字符1个字节,gbk编码一个字符2个字节,utf8编码一个字符3个字节;

    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)

  • 相关阅读:
    SQL语句中----删除表数据drop、truncate和delete的用法
    Sql server 中的bulk insert语句使用
    [Err] 42000
    abstract class和interface的异同
    浅谈Overload和Override
    public,private,protected,以及default时的区别
    Integer与int的区别
    static关键字
    "=="和equals方法究竟有什么区别
    final关键字
  • 原文地址:https://www.cnblogs.com/yuyue2014/p/4339762.html
Copyright © 2011-2022 走看看