博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql explain key_len小结
阅读量:5055 次
发布时间:2019-06-12

本文共 1106 字,大约阅读时间需要 3 分钟。

这片文章介绍了key_len参数值的计算方法

我再此稍微扩展下,如有雷同实属荣幸

key_len是表示得到结果集所使用的选择的索引的长度,但不包括order by,也就是说,如果order by也使用了索引则key_len则不计算在内

帖代码

SELECT t. *FROM tb_1 tFORCE INDEX ( idx_fid_dis_la )WHERE t.fid = '6572'ORDER BY t.dis DESC , t.la DESCLIMIT 100 , 40

执行计划

id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra1     SIMPLE              t     ref     idx_fid_dis_la  idx_fid_dis_la   2     const     147     Using where

注:fid: 2byte dis:1byte la:4byte

不像上边那样使用联合索引

SELECT t. *FROM tb_1 tWHERE t.fid = '6572'ORDER BY t.dis DESC , t.la DESCLIMIT 100 , 40

执行计划:

id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra1       SIMPLE            t     ref         typeid         typeid     2        const     127     Using where; Using filesort

注意这里extra里有了Using filesort,但用到的索引的长度仍然是2byte,也就是说得到结果只用到了fid字段,而order by 时没用到索引

 

总结:在得到结果但没将结果排序这一步时都只利用了fid,但是上一个索引(idx_fid_dis_la  )里有order by可利用的字段,而下一个索引里没有

虽然上一句中的order by用到了索引但是没有计算到key_len中

走啦,赶不上车了,如有不对之处,敬请提出

转载于:https://www.cnblogs.com/iLoveMyD/archive/2012/06/12/2546679.html

你可能感兴趣的文章
spring的value,null标签
查看>>
jQuery html text val方法使用
查看>>
Eclipse寻找JVM的机制
查看>>
Day2:购物车
查看>>
Maven实战(六)--- dependencies与dependencyManagement的区别
查看>>
多边形的研究
查看>>
django Models 常用的字段和参数
查看>>
linux -- 嵌入式linux下wifi无线网卡驱动
查看>>
SVN使用教程总结
查看>>
SQL中varchar和nvarchar有什么区别?
查看>>
ubuntu 安装mysql
查看>>
方法重写与方法重载
查看>>
C#生成PDF文档,读取TXT文件内容
查看>>
VS2008完全卸载工具
查看>>
Python入门小程序(一)
查看>>
Linux常用命令大全
查看>>
C#编程(三)
查看>>
鸡啄米vc++2010系列43(MFC常用类:定时器Timer)
查看>>
分页pagination实现及其应用
查看>>
SQLServer更改用户定义的数据库角色
查看>>