位置: 编程技术 - 正文

MySQL的查询计划中ken_len的值计算方法(查看mysql执行计划关键字)

编辑:rootadmin

推荐整理分享MySQL的查询计划中ken_len的值计算方法(查看mysql执行计划关键字),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql查询计划分析,查看mysql执行计划关键字,mysql查询总结,mysqljoin查询,mysql查询机制,mysql查询计划任务,mysql查询计划分析,mysql查询计划任务,内容如对您有帮助,希望把文章链接给更多的朋友!

key_len的含义

在MySQL中,可以通过explain查看SQL语句所走的路径,如下所示:

其中,key_len表示使用的索引长度,是以字节为单位。在上面的例子中,由于int型占用4个字节,而索引中只包含了1列,所以,key_len是4。

下面是联合索引的情况:

联合索引ix包含了2列,并且都使用到了,所以,这里ken_len是8。

到这里,我们已经可以理解key_len的含义了,似乎已经没有什么可讲的了,但是,MySQL中key_len的计算还有很多需要注意的地方。

例如,我们将b这一列的NOT NULL约束去掉,然后ken_len就和我们预期不一样了,如下所示:

MySQL中key_len计算规则

MySQL中,key_len的计算规则如下:

如果列可以为空,则在数据类型占用字节的基础上加1,如int型,不能为空key_len为4,可以为空key_len为5 如果列是变长的,则在数据列所占字节的基数上再加2,如varbinary(),不能为空,则key_len为 + 2 ,可以为空则key_len为+2+1 如果是字符型,则还需要考虑字符集,如某列的定义是varchar(),且是utf8,不能为空,则key_len为 * 3 + 2,可以为空则key_len为*3+2+1 此外,decimal列的计算方法与上面一样,如果可以为空,则在数据类型占用字节的基础上加1,但是,decimal本身所占用字节数,计算就比较复杂。MySQL的查询计划中ken_len的值计算方法(查看mysql执行计划关键字)

根据官方文档可以知道,decimal定义为decimal(M,D),其中,M是总的位数,D是小数点后保留的位数。小数点前与小数点后的数字分开存储,且以9位数为1组,用4个字节保存,如果低于9位数,需要的字节数如下:

Leftover Digits Number of Bytes-----------------------------|0 |0 ||1-2 |1 ||3-4 |2 ||5-6 |3 ||7-9 |4 |-----------------------------

例如:

decimal(,6)=> 小数点左边位,小数点右边6位 => 小数点左边分组为5 + 9,需要3个字节+4个字节存储,小数点一个分组,需要3个字节存储 => 总共需要个字节decimal(,9)=> 小数点左边9位数,小数点右边9位数 => 分别使用4个字节存储 => 共需要 8个字节decimal(,2)=> 小数点左边位数,小数点右边2位数 => 分组为7 + 9,需要8个字节存储,小数点右边1个字节存储 => 共需要9个字节

通过key_len分析联合索引

如下所示,我们定义了一个表t,表t包含a、b、c、d共4列:

现在要执行SQL语句如下:

假设我们有一个索引ix_x(b,d,c),通过explain得到如下输出:

可以看到,查询语句使用了联合索引中的b和d两列来过滤数据。

如果我们定义的联合索引不是`ix_x(b,d,c)`,而是`ix_x(b, c, d)`,通过explain得到的输入如下:

key_len为5,也就是说,只用到了联合索引中的第一列,可以看到,虽然联合索引包含了我们要查询的所有列,但是,由于定义的顺序问题,SQL语句并不能够充分利用索引。

linux下mysql 5.7. 免安装版本图文教程 本文为大家分享了mysql5.7.免安装版本教程,供大家参考,具体内容如下MySQL:5.7.程序目录:/usr/local/MySQL数据文件目录:/data/mysql下载地址

MySQL 5.7.压缩版安装笔记 本文实例为大家分享了mysql5.7.压缩版安装步骤,供大家参考,具体内容如下1.下载压缩包并解压缩到相应目录2.添加MySQL的bin目录路径到Path环境变量3.修

mysql5.7. zip 解压安装详细过程 一、下载地址

标签: 查看mysql执行计划关键字

本文链接地址:https://www.jiuchutong.com/biancheng/350093.html 转载请保留说明!

上一篇:MySQL实现类似于connect_by_isleaf的功能MySQL方法或存储过程(mysql和c)

下一篇:linux下mysql 5.7.16 免安装版本图文教程

  • 发票系统口令锁定
  • 租赁收入缴纳个人所得税
  • 所得税 报表
  • 销售是销项税还是进项税
  • 个体工商户税收标准2023年
  • 房地产企业净利润为负的原因
  • 非利息净收入包括营业外收入吗
  • 个税专项扣除是什么时候开始实行
  • 小规模纳税人进项发票怎么做账
  • 公益性捐赠税前扣除资格认定
  • 公司注销是不是破产了
  • 所得税汇算清缴账务处理
  • 非居民企业所得税计算公式
  • 外汇风险管理的贸易融资法
  • 培训费发票可以抵扣进项税吗
  • 公司一直零报税,有问题吗
  • 付款时收到应收票据会计分录怎么做?
  • 怎么核算租赁合同的印花税?
  • 买入返售金融资产什么意思
  • 租赁发票多少点
  • 存出资本保证金属于什么科目
  • mac系统如何连接北通手柄
  • 内部交易逆流如何算利润
  • 关于获得政府补助的公告
  • 外贸出口换汇成本怎么计算
  • 公司纳税高说明什么
  • 单位交水费会计分录
  • 如何开启系统自带杀毒软件
  • G40/50-70、SR1000随机Linux改安装Win7系统的实现方法
  • win7网络连接在哪里打开
  • PHP:Memcached::getMultiByKey()的用法_Memcached类
  • hbuilderx的使用视频
  • vuecli打包项目
  • 前端cli搭建
  • 鸳鸯小鸟
  • Web Spider Fiddler - JS Hook 基本使用
  • mysqlmha高可用
  • thinkphp if
  • 给工程项目买保险合法吗
  • 应征增值税不含税销售额(5%征收率)是什么意思
  • 发票明细怎么导出数量
  • 城镇土地使用税减免税政策
  • python线程间通信的几种方法
  • 小规模企业免征增值税如何做账
  • 什么情况下要去y加ies
  • 营销策划合作协议
  • 收缩数据库日志文件对数据有影响吗
  • 积分获取和消费的关系
  • 个税专项附加扣除标准调整
  • 公司注销未分配利润如何处理
  • 原始凭证审核要点包括
  • 定额转查账征收
  • 费用暂估入账后期如何冲销
  • 以前年度的损益调整为负值说明什么
  • 空调维护保养费用谁出
  • 企业债与公司债的还款有区别
  • 业务招待费是销售
  • sql server分页查询sql语句
  • 新品分析表格
  • ubuntu系统怎么修改ip地址
  • centos安装选择哪个
  • WINDOWS操作系统内置的GUEST
  • 键盘设施
  • mac怎么设计网页
  • mac 钥匙串访问
  • macbookzen
  • win10右下角功能列表不见了
  • vsftpd怎么配置
  • win7系统怎么操作
  • windows 8
  • linux shell脚本中sudo后输入密码
  • node.js入门教程
  • nodejs 加解密
  • 关于翡翠手镯知识
  • pythonglobal用法
  • 河南个体工商户营业执照年检
  • 国家税务总局多少员工
  • 优化营商环境关于人才工作
  • 发生技术入股递增怎么办
  • 本科毕业去上海找什么工作好
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设