最新要闻
- 天天播报:注意!泰福泵业将于5月23日召开股东大会
- 人与动物和谐共处!大爷水中游泳:天降白鹭搭便车
- 国产操作系统UOS新版预告 全面支持Intel 13代酷睿:性能飞跃提升
- 世界速讯:ChatGPT:一个里程碑!
- 冲出黎明前的黑暗:国产芯不再当备胎-环球时讯
- 海外玩家疯狂期待国产大作《黑神话:悟空》:金箍棒充满神秘力量
- 抖音小店运营没有头绪?一定要掌握这些技巧!全篇详解! 当前简讯
- 芒果TV五一狂促:会员年卡3折年内新低 仅79元
- 我国小行星防御首次任务计划公布:2030年对小行星动能撞击 世界播报
- 还买啥RTX 4070 AMD铁了心降价:16GB显存RX 6950 XT只要4749元_世界头条
- 豆瓣评分高达9.0!《灌篮高手》遭遇史上最严重盗摄|速读
- 热点评!别急着升级!火狐浏览器112稳定版出内存泄露Bug
- in fear(fearitself)|全球聚焦
- 遵义12岁失联女孩被找到,一细节披露令人不解,嫌疑人已被抓获
- 世纪天鸿涨停 三个交易日机构净买入1.41亿元
- 国产武侠开放世界沙盒生存游戏 《侠乂行:浪迹天涯》预售:128元 环球快资讯
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
资讯:分析查询语句:EXPLAIN
一、概述
(资料图片仅供参考)
使用mysqldumpslow工具定位到慢查询语句之后,可以使用explain或describe工具做针对性的分析查询语句。
MySQL种有专门负责优化SELECT语句的优化器模块:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供他认为最优的执行计划。
这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。MySQL提供了EXPLAIN语句来帮助我们查看某个查询语句的具体执行计划,看懂EXPLAIN语句的各个输出项,可以有针对性的提升我们查询语句的性能。
二、基本语法
explain 查询语句; select、insert、update、delete都可使用
例如:explain select * from user limit 10;
explain语句输出的各列作用如下:
列名 | 描述 |
id | 在一个大的查询语句种,每一个select关键字都对应一个唯一的id |
select_type | select关键字对应的那个查询的类型 |
table | 表名 |
partitions | 匹配的分区信息 |
type | 针对单表的访问方法 |
possible_keys | 可能用到的索引 |
key | 实际上用到的索引 |
key_len | 实际用到的索引长度 |
ref | 当使用索引列等值查询时,与索引列进行等值匹配的对象信息 |
rows | 预估的需要读取的记录数 |
filtered | 某个表经过搜索条件过滤后剩余记录条数的百分比 |
exea | 一些额外信息 |
三、数据准备
执行以下代码,为分析explain做准备
#创建表CREATE TABLE s1 ( id INT AUTO_INCREMENT, key1 VARCHAR(100), key2 INT, key3 VARCHAR(100), key_part1 VARCHAR(100), key_part2 VARCHAR(100), key_part3 VARCHAR(100), common_field VARCHAR(100), PRIMARY KEY (id), INDEX idx_key1 (key1), UNIQUE INDEX idx_key2 (key2), INDEX idx_key3 (key3), INDEX idx_key_part(key_part1, key_part2, key_part3)) ENGINE=INNODB CHARSET=utf8;CREATE TABLE s2 ( id INT AUTO_INCREMENT, key1 VARCHAR(100), key2 INT, key3 VARCHAR(100), key_part1 VARCHAR(100), key_part2 VARCHAR(100), key_part3 VARCHAR(100), common_field VARCHAR(100), PRIMARY KEY (id), INDEX idx_key1 (key1), UNIQUE INDEX idx_key2 (key2), INDEX idx_key3 (key3), INDEX idx_key_part(key_part1, key_part2, key_part3)) ENGINE=INNODB CHARSET=utf8;#创建存储函数:DELIMITER //CREATE FUNCTION rand_string1(n INT) RETURNS VARCHAR(255) #该函数会返回一个字符串BEGIN DECLARE chars_str VARCHAR(100) DEFAULT "abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ";DECLARE return_str VARCHAR(255) DEFAULT "";DECLARE i INT DEFAULT 0;WHILE i < n DOSET return_str =CONCAT(return_str,SUBSTRING(chars_str,FLOOR(1+RAND()*52),1));SET i = i + 1;END WHILE;RETURN return_str;END //DELIMITER ;SET GLOBAL log_bin_trust_function_creators=1; #创建存储过程:DELIMITER //CREATE PROCEDURE insert_s1 (IN min_num INT (10),IN max_num INT (10))BEGINDECLARE i INT DEFAULT 0;SET autocommit = 0;REPEATSET i = i + 1;INSERT INTO s1 VALUES( (min_num + i), rand_string1(6), (min_num + 30 * i + 5), rand_string1(6), rand_string1(10), rand_string1(5), rand_string1(10), rand_string1(10));UNTIL i = max_numEND REPEAT;COMMIT;END //DELIMITER ;DELIMITER //CREATE PROCEDURE insert_s2 (IN min_num INT (10),IN max_num INT (10))BEGINDECLARE i INT DEFAULT 0;SET autocommit = 0;REPEATSET i = i + 1;INSERT INTO s2 VALUES( (min_num + i),rand_string1(6),(min_num + 30 * i + 5),rand_string1(6),rand_string1(10),rand_string1(5),rand_string1(10),rand_string1(10));UNTIL i = max_numEND REPEAT;COMMIT;END //DELIMITER ;#调用存储过程CALL insert_s1(10001,10000);CALL insert_s2(10001,10000);SELECT COUNT(*) FROM s1;SELECT COUNT(*) FROM s2;
四、explain各列详解
1、table:表名
查询的每一个行记录对应着一个单表
explain select * from s1;explain select * from s1 inner join s2;
2、id:在一个大的查询语句中,每一个select关键字都对应一个唯一的id
explain select * from s1where key1 = "a";
总结:
id如果相同,可以认为是一组,从上往下执行
在所有组种,id越大,优先级越高,越先执行
每一个id号码表示一趟独立的查询,一个SQL查询的趟数越少越好。
3、select_type:select关键字对应的那个查询的类型,确定小查询在大查询种扮演什么角色
①查询语句中不包含UNION或者子查询的查询都算是SIMPLE类型
explain select * from s1;
②连接查询也是SIMPLE
explain select * from s1 inner join s2;
③对于包含UNION、UNION ALL的大查询来说,它是由几个小查询组成的,其中最左边的查询的select_type值就是PRIMARY,其余的小查询的select_type值为UNION
④MySQL选择使用临时表来完成UNION查询的去重工作,针对该临时表的查询的select_type的值是UNION RESULT
UNION 具有去重操作,UNION ALL没有去重操作,所以UNION会有一个临时表
⑤如果包含子查询的查询语句不能转化为多表联查的形式,并且该子查询不是相关子查询,该子查询的第一个select关键字的查询的select_type就是SUBQUERY
⑥如果包含子查询的查询语句不能转化为多表联查的形式,并且该子查询是相关子查询,该子查询的第一个select关键字的查询的select_type就是DEPENDENT SUBQUERY
⑦在包含`UNION`或者`UNION ALL`的大查询中,如果各个小查询都依赖于外层查询的话,那除了最左边的那个小查询之外,其余的小查询的`select type `的值就是`DEPENDENT UNION
⑧对于包含派生表的查询,该派生表对应的子查询的select_type就是DERIVED
⑨当查询优化器在执行包含子查询的语句时,选择将子查询物化之后与外层查询进行连接查询时,该子查询对应的`select type`属性就是‘MATERIALIZED~
4、type
执行计划的一条记录就代表着MySQL对某个表的执行查询时的访问方法,又称°访问类型”,其中的type列就表明了这个访问方法是啥,是较为重要的一个指标。比如,看到type列的值是ref,表明MysQL即将使用ref访问方法来执行对s1表的查询。
完整的访问方法如下: system,const,eq_ref,ref, fulltext,ref_or_null , index_merge ,unique_subquery , index_subquery , range , index,ALL。
①system
当表中只有一条记录并且该表使用的存储引擎统计的书数据是精确的,比如MyISAM、Memory,那么对该表的访问方法就是system
②const
当我们根据主键或唯一的二级索引列与常数进行等值匹配时,对单表的访问方法就是const
explain select * from s1 where id = 10005;explain select * from s1 where key2 = 10066;
③eq_ref
在连接查询时,如果被驱动表是通过主键或者唯一二级索引列等值匹配的方式进行访问的(如果该主键或者唯一二级索引是联合索引的话,所有的索引列都必须进行等值比较),则对该被驱动表的访问方法就是`eg ref`
explain select * from s1 inner join s2 on s1.id = s2.id;
④ref
当通过普通的二级索引列与常量进行等值匹配时来查询某个表,那么对该表的访问方法就可能是`ref"
explain select * from s1 where key1 = "a";
⑤unique_subquery
unique subquery`是针对在一些包含`IN`子查询的查询语句中,如果查询优化器决定将`IN`子查询转换为`ExISTS`子查询,而且子查询可以使用到主键进行等值匹配的话,那么该子查询执行计划的"type "列的值就是`unique_ subquery
⑥如果使用索引获取某些范围区间的记录,那么就可能用到range访问方法
⑦index
当我们可以使用索引覆盖,但需要扫描全部的索引记录时,该表的访问方法就是index
⑧all:全表扫描
5、possiable_keys和key
possiable_keys列表示在某个查询语句中,对某个表执行单表查询时可能用到的索引有哪些。
key表示实际用到的索引有哪些
6、key_len
实际使用到的索引的长度(字节数),检查是否充分利用了索引,值越大越好(和自己比),主要针对联合索引。
先更新到这里,会持续更新~~~~
关键词:
-
Django之路由层 (有名和无名分组 反向解析 路由分发 名称空间)_环球观速讯
目录一、路由匹配django2 X及以上path第一个参数写什么就匹配什么django1 X第一个参数是正则表达式PS:无论
来源: Django之路由层 (有名和无名分组 反向解析 路由分发 名称空间)_环球观速讯
资讯:分析查询语句:EXPLAIN
上海数据交易所迎来国际板
天天播报:注意!泰福泵业将于5月23日召开股东大会
人与动物和谐共处!大爷水中游泳:天降白鹭搭便车
国产操作系统UOS新版预告 全面支持Intel 13代酷睿:性能飞跃提升
世界速讯:ChatGPT:一个里程碑!
冲出黎明前的黑暗:国产芯不再当备胎-环球时讯
海外玩家疯狂期待国产大作《黑神话:悟空》:金箍棒充满神秘力量
分享总结:开源网关-应用管理篇
KMP算法学习笔记
记录-因为写不出拖拽移动效果,我恶补了一下Dom中的各种距离
每日资讯:【谷歌插件开发】获取当前网站COOKIE并上报HTTP-API
Java中为什么重写equals()也需要重写hashCode()?
抖音小店运营没有头绪?一定要掌握这些技巧!全篇详解! 当前简讯
债市日报:4月25日_环球消息
芒果TV五一狂促:会员年卡3折年内新低 仅79元
我国小行星防御首次任务计划公布:2030年对小行星动能撞击 世界播报
还买啥RTX 4070 AMD铁了心降价:16GB显存RX 6950 XT只要4749元_世界头条
豆瓣评分高达9.0!《灌篮高手》遭遇史上最严重盗摄|速读
热点评!别急着升级!火狐浏览器112稳定版出内存泄露Bug
in fear(fearitself)|全球聚焦
遵义12岁失联女孩被找到,一细节披露令人不解,嫌疑人已被抓获
世纪天鸿涨停 三个交易日机构净买入1.41亿元
国产武侠开放世界沙盒生存游戏 《侠乂行:浪迹天涯》预售:128元 环球快资讯
男子高速要求停车上厕所被拒后跳车 专家科普:极其危险 环球要闻
今日报丨铭瑄RTX 4070 iCraft OC12G瑷珈显卡评测:专为2K高画质而生 DLSS 3畅享百帧光追
天天微速讯:比亚迪盘活腾势!全新猎跑SUV腾势N7盲订7天订单破万
1亿像素仅1399元 荣耀X50i开箱图赏 世界今亮点
三年来北京为3万余名务工人员追发工资5.11亿元-世界速看料
06 内存(上)划分与组织内存-天天简讯
乌合之众再次上演,打工人将被AI一键淘汰?
谈谈持续集成,持续交付,持续部署之间的区别
记录一则ADG备库报错ORA-29771的案例|天天观速讯
全球热消息:数字孪生与元宇宙:虚拟与现实的奇妙对话
恒生指数25日收跌1.71% 互联网科技股集体走低 最资讯
山东海化: 关于会计政策变更的独立意见|焦点简讯
不怕打岔!微信推出“最近阅读”:近期阅读文章一键查
腾讯携手Unity:推出定制化实时导航3D地图|天天热消息
金属马达+双滚珠轴承!酷冷至尊莫比乌斯120 OC风扇图赏|快播报
吉林长春现实版“虎口拔牙” 医生:从业20多年首次
焦点热议:拒还3亿退款!暴雪回应被网易起诉:目前未收到诉状
4月25日涨停板复盘:中科曙光涨停 中国科传11天7板
Java中不同对象调用该实例方法返回值是同一个地址空间吗?|天天最资讯
天天观焦点:Sftp工具类(跨服务器传输)
MySQL 备忘清单_开发速查表分享
头条:使用Dockerfile部署springboot打包jar包
【天天新要闻】仿Django框架-基于wsgiref模块和jinja2模块写一个简单的框架 主流框架简介 动静态网页 Python虚拟环境
火热征集中!全国城市生活垃圾分类标识征集大赛邀你来参与-世界新消息
收评:创指跌1.83%创近半年来新低 锂电池产业链跌幅靠前 天天热点
当前短讯!【财经分析】供应收缩叠加需求前景有望改善 原油止跌反弹
大气!蔚来宣布五一期间所有车主高速免费换电:不限次
47个楼盘2块钱甩卖!恒大汽车:只为专注造车
《古剑奇谭》开发商新作!类银河城游戏《心渊梦境》登陆PC/主机全平台
上海杭州之间或将建世界首条超级高铁:仅9分钟车程 全球热点
起诉苹果后 百度文心一言推出内测专用独立App:支持语音输入
坐下、抬爪、击掌……“毛孩子”们为患者带来欢乐与慰藉!
焦点快看:高质量数仓建模
火山引擎 DataLeap:在数据研发中,如何提升效率?
全球观点:数仓实践丨主动预防-DWS关键工具安装确认
支持全文检索、知识图谱、工作流审批的知识平台_天天时讯
【Mysql】复合主键的索引
安徽宿州:在房交会期间购买90平米以上新房,将给予每套10000元消费券
千万粉网红回应打卡徐州烧烤被网暴:不是黑 问题确实存在
“祝融号”火星车休眠近一年仍未唤醒 设计师回应:可能遭遇不可预知沙尘|微动态
睡个美容觉!马应龙蒸汽眼罩0.99元/片冲量大促 快看点
《赛博朋克2077》自研REDEngine出Bug:开启DLSS 3反而变卡 当前资讯
今日港股异动个股一览:中创新航(03931)现跌超5% 高盛称产能过剩或拖累利润率 产能扩张计划或提高杠杆水平_世界独家
吴镇宇14岁儿子官宣恋情!是日本无数宅男的女神
总裁赵伟与欧冶工业品公司领导座谈交流 时讯
扎克伯格醉心AI:Facebook或将更名MetAI
爱过的人我已不再拥有是什么歌?爱过的人我已不再拥有完整版歌词
终极系列正确观看顺序是什么?终极系列战力指数排名
双探的原型是什么?双探剧情介绍
天津德云鼓曲社升平雅乐特别奉献专场观演攻略 当前播报
光芒程亦治和丽姿第几集复婚的?光芒程亦治的身份是什么?
by2是双胞胎吗?by2个人资料介绍
强强联合,ByteHouse 携手亚马逊云科技,新一代云数仓服务重磅升级 世界新消息
全球通讯!深入理解C#泛型:new与where关键字全解析
使用docker 运行etcd 单实例/集群|环球播资讯
厦门市场监管部门发出“五一”旅游行业价格行为提醒告诫_天天速看
日本强推“排污入海”!学界:全球海洋生态将面临核污染水风险 全球信息
天天微速讯:自动泊车挑战立体车库 奔驰唯一成功 碾压华为、特斯拉
世界新资讯:特斯拉动能回收要彻底取消?博主辟谣:不实、只有两级可调
未上线就创纪录!《原神》开发商新作《崩坏:星穹铁道》iOS 113国登顶-热点
歼-20试飞员评价《长空之王》:很真实的影片
常欣科技2022年亏损30.64万同比由盈转亏 产品销售下降
要闻:彻底服了!这JB,NBA第一硬!黑8,必须黑8!
2023年宁德社保费用参考 宁德社保个人缴费标准是多少|速讯
iFlutter - 加速Flutter开发 环球消息
江西日报经济版头条 | 分宜工业经济高质量发展步履坚实
昭通昭阳富滇村镇银行获批解散 被富滇银行吸收合并 世界要闻
【环球财经】美国第一共和银行一季度业绩显著恶化
宋都基业投资股份有限公司发布公司股票可能被实施退市风险警示的第二次风险提示公告
东北地区及新疆等地有雨雪天气 江南华南有明显降雨过程
2023一卡逛崇川在哪里购买
今日报丨青岛口岸启运港退税政策宣传推介会举行
汽车也能戴“手表” 五菱宝骏悦也预告:行业首次搭载Car-watch
2499元 雷神MIX迷你主机上架:13代i5 比一罐可乐还小 世界快消息
商家浑水摸鱼 买到无码SteamDeck你肯定被骗了 全球观速讯