mysql的explain关键字执行结果中有一个ken_len列,其值表示这个SQL在执行用到的索引列的长度,在使用联合索引(多列)时用于判断使用了哪些索引列。

常用类型计算规则如下:

  • char(n)类型,其长度为3n字节
  • varchar(n)类型,其长度为3n+2字节,这个2用于存储字符串的长度
  • tinyint(n)类型,其长度为1字节
  • smallint(n)类型,其长度为2字节
  • int(n)类型,其长度为4字节
  • bigint(n)类型,其长度为8字节
  • time类型,其长度为3字节
  • date类型,其长度为3字节
  • timestamp类型,其长度为4字节
  • datetime类型,其长度为8字节

另外:如果其值可为null,则需要额外一个字节。

如下为建表的DDL语句:

CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(100) NOT NULL COMMENT '名字',`age` int(3) NOT NULL COMMENT '年龄',`sex` char(1) DEFAULT NULL COMMENT '性别',PRIMARY KEY (`id`) USING BTREE,KEY `idx_name_age_sex` (`name`,`age`,`sex`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

单列索引

现在我们使用主键列做筛选条件执行一个SQL执行计划:

explain select * FROM user where id=1

结果如下:

我们的user表是给id列建了主键索引、int类型自增的,用id进行=查询,可以看到使用了主键索引,ken_len列的值为4,在mysql中,int类型占4个字节空间,所以这里为4。

复合索引

现在我们使用复合索引列执行一个SQL执行计划:

explain select * FROM user where name='a' and age = 12 and sex=1;

执行结果如下:

我们可以看到ken_len列值为306,由于我们建的是name、age、sex三列的复合索引,查询条件又是这三列,所以结果应该是name:3*100+2,age:4,sex:3+1(sex可null),其和应该为310,但由于sex为char类型,我们给的是1为int类型,所以sex列没用索引,所以这里为306,从这也可以看出如果给的值和列类型不匹配,不会走索引。

mysql的explain关键字ken_len列相关推荐

  1. MySql中Explain的Extra列

    Extra列 这一列展示的是额外信息.常见的重要值如下: 1)Using index:使用覆盖索引 覆盖索引定义:mysql执行计划explain结果里的key有使用索引,如果select后面查询的字 ...

  2. mysql 查询优化 Explain关键字 高性能mysql笔记

    文章目录 性能分析 1.MySQL Query Optimizer 2.MySQL常见瓶颈 3.Explain 3.1 explain是什么 3.2 explain怎么使用 3.3 explain能干 ...

  3. mysql 优化关键字_MySQL 优化之 EXPLAIN 关键字

    0. 准备 首先执行如下的 sql 语句: CREATE TABLE IF NOT EXISTS `article` (`id` int(10) unsigned NOT NULL AUTO_INCR ...

  4. [MySQL]--查询性能分析工具-explain关键字

    explain显示了MySQL如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. explain的使用方法很简单,只需要在select查询语句前面加上expl ...

  5. mysql 优化关键字_Mysql之Explain关键字及常见的优化手段

    Explain关键字字段描述: Explain关键字字段详情描述 id 我们写的查询语句一般都以SELECT关键字开头,比较简单的查询语句里只有一个SELECT关键字,但是下边两种情况下在一条查询语句 ...

  6. MySQL 优化之 EXPLAIN 关键字

    MySQL查询优化之explain的深入解析 0. 准备 首先执行如下的 sql 语句: CREATE TABLE IF NOT EXISTS `article` (`id` int(10) unsi ...

  7. Mysql性能分析关键字Explain详解(附例子 )

    文章目录 Explain 1. 定义(是什么) 2. 作用(能干嘛) 3. 使用(怎么玩) 4. 各字段解释 Explain 1. 定义(是什么) 使用EXPLAIN关键字可以模拟优化器执行SQL查询 ...

  8. 3、mysql索引优化一:Explain关键字分析

    作为一个Java开发,在我们日常工作中,对于mysql的使用中涉及最多的恐怕就是写SQL了,一定遇到过sql执行慢的问题,那么SQL优化工作就显得格外重要.有了对mysql执行过程以及索引实现原理了解 ...

  9. mysql分析表关键字_SQL调优利器——explain关键字详解(MySQL)

    前言 有时候,我们写好SQL后发现执行查询的时间超过了预期,但自己已经有根据表的已有索引去写SQL语句,这个时候就要考虑是否是在查询的过程中出现了索引失效的问题.那么我们可以怎么样去验证SQL在执行过 ...

最新文章

  1. Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...
  2. Win7各版本功能对比
  3. mega_[MEGA DEAL]完整的Android开发人员课程–构建14个应用程序(91%折扣)
  4. Eclipse中新建jsp文件访问页面时乱码问题
  5. computed怎么使用_Vuex 基本使用
  6. linux下好玩的命令
  7. github中文件夹名带数字,git下来为空文件夹
  8. Unity3D 退出游戏应用的代码
  9. 移动设备管理存在哪些威胁?
  10. 互联网创业怎么做?分享我的7个网创实操心得
  11. CorelDRAW X8官方正版序列号如何安装使用?
  12. The Truman Show
  13. 各种水龙头拆卸图解_各种水龙头拆卸图解
  14. Modbus从站读写数据
  15. [IDE]vs code更新后变成英文版
  16. 多元有序logistic回归分析_多元Logistic_回归分析解析.ppt
  17. 如何更改使用 Matplotlib 绘制的图形的大小?
  18. Linux部署lamp(centos 7),照做就行
  19. 白嫖代理去哔哩哔哩看冰冰!!!确定不进来康康?
  20. educoder 国标码转区位码实验(详细)

热门文章

  1. java物联网第二天 感悟下
  2. 编码与DNA存储——DNA码的构造
  3. arduino nano 蓝牙_基于Arduino的摩尔斯电码练习及无线收发报训练器
  4. 电力行业数字孪生技术应用白皮书(2022)
  5. PCI Express 协议基础
  6. 金融行业移动信息化解决方案
  7. .NET周报【10月第1期 2022-10-11】
  8. 进程同步生产者-消费者问题C语言,经典进程同步问题 --- 生产者和消费者
  9. metatrade4索罗斯都要用到的外汇交易术
  10. 你还在使用JDK7,今天阿粉带你来了解一下JDK8,不得不说,真香!