mysql进行explain的时候key_len的计算方法

mysql 手册中没有关于key_length的详细介绍,经过试验验证了key_length的计算方式。

  • 当索引字段为定长数据类型,比如char,int,datetime,如果有是否为NULL的标记,这个标记需要占用1个字节。对于变长数据类型,比如:varchar,除了是否为NULL的标记外,还需要有长度信息,需要占用2个字节。(当字段定义为NOT NULL的时候,是否为NULL的标记将不占用字节)。
  • 不同的字符集,latin1编码一个字符一个字节,gbk编码的为一个字符2个字节,utf8编码的一个字符3个字节。
  • 创建索引的时候可以指定索引的长度,例如:
    alter table test add index uri(uri(30));
    长度30指的是字符的个数,如果为utf8编码varchar(255),key_length=30*3+2=92个字节。
时间: 2024-10-07 14:30:20

mysql进行explain的时候key_len的计算方法的相关文章

MySQL的explain

> 一.Explain 二.各项值 1.id 每个被独立执行的操作的标识,表示对象被操作的顺序:id值大,先被执行:如果相同,执行顺序从上到下. 若没有子查询和联合查询,id则都是1.Mysql会按照id从大到小的顺序执行query,在id相同的情况下,则从上到下执行. 2.select_type 查询中每个select子句的类型,提供了各种表示table列引用的使用方式的类型. (1)SIMPLE 简单的SELECT语句(不包括UNION操作或子查询操作) (2)PRIMARY/UNION P

MySQL中EXPLAIN详解

MySQL中EXPLAIN详解 explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了: 如:explain select username,first_name form hx,itlearner where a.id=b.id EXPLAIN列的解释: id:本次 select 的标识符.在查询中每个 select都有一个顺序的数值. select_type :查询类

MySQL中EXPLAIN命令详解

explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了: 如: explain select surname,first_name form a,b where a.id=b.id EXPLAIN列的解释: table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示连接使用了何种类型.从最好到最差的连接类型为const.eq_reg.ref.range.in

详解MySQL中EXPLAIN解释命令

Explain 结果解读与实践 基于 MySQL 5.0.67 ,存储引擎 MyISAM . 注:单独一行的"%%"及"`"表示分隔内容,就象分开“第一章”“第二章”. explain 可以分析 select 语句的执行,即 MySQL 的“执行计划”: mysql> explain select 1; +----+-------------+-------+------+---------------+------+---------+------+----

MySQL中EXPLAIN解释命令

explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 先解析一条sql语句,看出现什么内容 EXPLAINSELECTs.uid,s.username,s.name,f.email,f.mobile,f.phone,f.postalcode,f.addressFROM uchome_space ASs,uchome_spacefieldASfWHERE 1 AND s.groupid=0AND s.uid=f.uid 1. i

mysql的explain用法

Mysql-explain的参数详解及用法 EXPLAIN 的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 项 说明 id MySQL Query Optimizer 选定的执行计划中查询的序列号.表示查询中执行 select 子句或操作表的顺序,id 值越大优先级越高,越先被执行.id 相同,执行顺序由上至下. select_type 查询类型 说明 SIMPLE 简单的 select 查询,不使用 union 及子查询 PRIMARY 最外层的 select 查询 UNION U

MySQL的EXPLAIN的type

连接操作的类型 (1)SYSTEM CONST的特例,当表上只有一条元组匹配 (2)CONST WHERE条件筛选后表上至多有一条元组匹配时,比如WHERE ID = 2 (ID是主键,值为2的要么有一条要么没有) (3)EQ_REF 参与连接运算的表是内表(在代码实现的算法中,两表连接时作为循环中的内循环遍历的对象,这样的表称为内表). 基于索引(连接字段上存在唯一索引或者主键索引,且操作符必须是"="谓词,索引值不能为NULL)做扫描,使得对外表的一条元组,内表只有唯一一条元组与之

MYSQL EXPLAIN 中的KEY_LEN的说明

对于explain extended 查看执行计划里面的一些信息作为一个DBA还是必须掌握的. 参考博文:http://www.cnblogs.com/xuanzhi201111/p/4554769.html 环境: MySQL5.6.36 默认字符集: utf8 一.前置回顾: 1.数值型的字段长度 字段类型   长度    UNSIGNED          SIGNED有符号型           适用场合 tinyint:    1bytes   2^8-1 0-255        

MySQL语句explain详解

我们一般再检查一个SQL语句执行效率的时候,通常会首先用explain来看下该语句的相关情况.虽然经常使用,但时候你深刻的理解了其结果中每个字段的含义呢?其中type字段是我们关注的重中之重.type字段的归纳:     连接类型     system          表只有一行     const           表最多只有一行匹配,通用用于主键或者唯一索引比较时     eq_ref          每次与之前的表合并行都只在该表读取一行,这是除了system,const之外最好的一