加入收藏 | 设为首页 | 会员中心 | 我要投稿 广州站长网 (https://www.020zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQLexplain中key_len怎样计算

发布时间:2022-01-17 13:18:04 所属栏目:MySql教程 来源:互联网
导读:本篇文章给大家分享的是有关MySQLexplain中key_len怎样计算,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 MySQL explain中key_len的计算 key_len表示索引使用的字节数,根据这个值可
        本篇文章给大家分享的是有关MySQLexplain中key_len怎样计算,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
   
MySQL explain中key_len的计算
 
       key_len表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在组合索引的时候,判断该索引有多少部分被使用到非常重要。
 
       在计算key_len时,下面是一些需要考虑的点:
 
索引字段的附加信息:
 
1.可以分为变长和定长数据类型讨论;
 
2.当索引字段为定长数据类型时,如char,int,datetime,需要有是否为空的标记,这个标记占用一个字节(对于not null来说不需要这一个字节);
 
3.当索引字段为变长数据类型时,如varchar,除了是否为空的标记外,还需要有长度信息,需要占用两个字节;
 
4.对于char,varchar,blob,text等,key_len的长度还和字符集有关,latin1 一个字符占用一个字节,gbk 一个字符占用两个字节,utf8 一个字符占用三个字节
 
例如:
 
列类型         KEY_LEN                       备注
 
id int                key_len = 4+1                int为4bytes,允许为NULL,加1byte
 
id bigint not nullkey_len=8                bigint为8bytes
 
user char(30) utf8key_len=30*3+1        utf8每个字符为3bytes,允许为NULL,加1byte
 
user varchar(30) not null utf8key_len=30*3+2utf8每个字符为3bytes,变长数据类型,加2bytes
 
user varchar(30) utf8key_len=30*3+2+1utf8每个字符为3bytes,允许为NULL,加1byte,变长数据类型,加2bytes
 
detail text(10) utf8key_len=30*3+2+1       TEXT截取部分,被视为动态列类型
 
备注:
 
key_len只表示了where中用于条件过滤时被选中的索引列,是不包含order by / group by 这一部分被选中的索引列的。
 
例如:
 
有一个联合索引idx(a1,b2,c3),三列均是 int not null,那么下面的执行计划中key_len的值是8,不是12
 
select .... from table where c1=? and c2=? order by c1;
 
以上就是MySQLexplain中key_len怎样计算,小编相信有部分知识点可能是我们日常工作会见到或用到的。

(编辑:广州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读