mysql explain中key_len的计算

摘要:
ken_ 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)

免责声明:文章转载自《mysql explain中key_len的计算》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇KEIL5中C/C++优化等级问题使用rman恢复数据小结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mysql:windows上mysql服务管理

自5.1.21及以后的变化: The following table shows the available servers for Windows in MySQL 5.1.20 and earlier. Binary Description mysqld-nt Optimized binary with named-pipe sup...

mysql如何修改所有的definer

mysql中的definer是什么,有什么作用? 我们在mysql创建view、trigger、function、procedure、event时都会定义一个Definer=‘xxx’,类似如下: CREATE ALGORITHM =UNDEFINED DEFINER = `root`@`%` SQL SECURITY DEFI...

mysql用root用户给其他用户授权报错1044 access denied for user root

公司本地测试数据库一直使用root直接使用数据库,一直使用没问题 突然有一天,需要增加一个用户,并使用该用户进行操作数据库 在成功创建新用户后,开始想给用户授予最高权限,结果报错,1044 access denied for user root 我以为是无法创建同样的root用户 于是建了一个新数据库,newdb ,单独个新建用户增加newdb的权限,还是...

Datax中mysql无法连接上的问题(因为版本问题)

我linux上的mysql是8.0版本的,但是datax中的JDBC是5.1版本因此出错,进入datax的pulgin文件夹中把writer和reader文件加下的mysql对应的文件下的libs中换成8.0版本的JDBC,原先的JDBC直接删除就可以。...

Prometheus+Grafana监控mysql主从故障告警

因业务需求,mysql主从常常出现同步故障,故研究了Prometheus来做mysql主从同步状态监控报警。 1 Prometheus介绍 1.1什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。...

linux环境安装mysql,以及mysql基本的终端操作命令

linux环境下安装mysql服务器、客户端mysql简单的终端操作指令(使用数据库、简单的增删改查和备份恢复)1 SQL: Structured Query Language 结构化查询语言。 运用sql语句,可以对关系型数据库进行操作。 目前常见的关系型数据库有: MySQL oracle...