sql慢查询问题排查
explain SELECT * from bid_result;
explain SELECT * from bid_result WHERE id = 24
主要字段意思
1、select_type
示查询中每个select子句的类型
(1) SIMPLE(简单SELECT,不使用UNION或子查询等)
(2) PRIMARY(子查询中最外层查询,查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY)
(3) UNION(UNION中的第二个或后面的SELECT语句)
(4) DEPENDENT UNION(UNION中的第二个或后面的SELECT语句,取决于外面的查询)
(5) UNION RESULT(UNION的结果,union语句中第二个select开始后面所有select)
(6) SUBQUERY(子查询中的第一个SELECT,结果不依赖于外部查询)
(7) DEPENDENT SUBQUERY(子查询中的第一个SELECT,依赖于外部查询)
(8) DERIVED(派生表的SELECT, FROM子句的子查询)
(9) UNCACHEABLE SUBQUERY(一个子查询的结果不能被缓存,必须重新评估外链接的第一行)
2、type
对表访问方式,表示MySQL在表中找到所需行的方式,又称“访问类型”。
常用的类型有: ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)
ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行
index: Full Index Scan,index与ALL区别为index类型只遍历索引树
range:只检索给定范围的行,使用一个索引来选择行
ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
eq_ref: 类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key或者 unique key作为关联条件
const、system: 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system
NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。
3、possible_keys
指出MySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用(该查询可以利用的索引,如果没有任何索引显示 null)
该列完全独立于EXPLAIN输出所示的表的次序。这意味着在possible_keys中的某些键实际上不能按生成的表次序使用。
如果该列是NULL,则没有相关的索引。在这种情况下,可以通过检查WHERE子句看是否它引用某些列或适合索引的列来提高你的查询性能。如果是这样,创造一个适当的索引并且再次用EXPLAIN检查查询
4、Key
key列显示MySQL实际决定使用的键(索引),必然包含在possible_keys中
如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。
5、key_len
表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度(key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的)
不损失精确性的情况下,长度越短越好
6、ref
列与索引的比较,表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
7、rows
估算出结果集行数,表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数
8、Extra
该列包含MySQL解决查询的详细信息,有以下几种情况:
Using where:不用读取表中所有信息,仅通过索引就可以获取所需数据,这发生在对表的全部的请求列都是同一个索引的部分的时候,表示mysql服务器将在存储引擎检索行后再进行过滤
Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询,常见 group by ; order by
Using filesort:当Query中包含 order by 操作,而且无法利用索引完成的排序操作称为“文件排序”
Using join buffer:改值强调了在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果。如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进能。
sql慢查询问题排查相关推荐
- SQL 审核查询平台
◆一.开源项目简介 Archery 定位于 SQL 审核查询平台,旨在提升 DBA 的工作效率,支持多种数据库的 SQL 上线和查询,同时支持丰富的 MySQL 运维功能. ◆二.开源协议 使用Apa ...
- Mysql之慢查询的排查及其优化
文章目录 一:建造海量数据插入数据库 1:建造表 2:插入200万条数据 二:排查慢查询的sql 前言: 1:查看数据库服务慢查询日志是否开启 2:开启慢查询日志 3:查看慢查询阈值(超过这个时间sq ...
- Oracle 查询慢排查
生产环境Oracle 查询慢排查 现象是生产环境Oracle rac有一个查询很慢(比较少用),查询大概10秒钟才返回,但是有时又很快,而且其他的查询都没问题. 但是把sql语句单独在pl/sql 上 ...
- mysql 慢查询原因 排查 优化
慢查询原因 一条sql偶尔查询很慢 原因 数据库更新频繁,redo log buf很快满了,只能先暂停其他操作,将redo log buf同步写到磁盘上时,这时候查询只能等待写磁盘完成了. 查询涉及到 ...
- sql子查询示例_SQL更新查询示例说明
sql子查询示例 In this article, we're going to learn how to use the SQL update statement - what it is, wha ...
- R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句
R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库.将dplyr语法查询语句翻译为SQL查询语句 目录
- SQL高级查询(层次化查询,递归)
SQL 高级查询 前面我们写了一下 SQL 的极简入门,今天来说点高级查询.没看到的朋友可以点击下面链接查看. 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 1 小时 SQL 极 ...
- 一步一步学linq to sql(四)查询句法
select 描述:查询顾客的公司名.地址信息 查询句法: var 构建匿名类型1 = from c in ctx.Customers select new { 公司名 = c.CompanyName ...
- Sql语句查询 显示序号
怎么样用SQL语句查询出来带有序号,不是我们用递增所带的ID号 就是按行数用数字显示出来 序号,id,userid 1 5 aaa 2 6 bbb 3 8 ccc 4 9 ddd 5 17 eee 类 ...
最新文章
- blocked java线程_Java线程状态:BLOCKED与WAITING的区别
- java中文getbytes为3,java 中文乱码问题
- Latex 算法过长 分页显示方法
- JDBC(11)—数据库连接池
- rsync的原理和安装使用及配制详解(三)(转)
- 12_首页显示热门商品和最新商品
- 逆水寒服务器维护公告,逆水寒1月3日更新了什么 逆水寒1月3日更新维护公告
- 微博的html,微博输入html
- iOS模拟器找不到证书?
- 安装的时候出现SPSS中can not create java virtual machine问题怎么办
- echarts柱状图显示百分比
- 使用flutter控制蓝牙通讯_使用Flutter控制蓝牙通讯
- kafka错误代码解释
- CTF题库-实验吧(密码学)之综合篇
- Struts2的OGNL表达式语言
- 360元(含硬盘)!小白二手旧电脑组建超低价NAS记录
- 为什么要学习设计模式
- 几何重数(geometric multiplicity)与代数重数 (algebraic multiplicity)
- 通达信挖掘大牛浮水指标公式源码
- 通过实例理解Go逃逸分析
热门文章
- NEU(Fst Network Embedding Enhancement via High Order Proximity Approximation)
- openssl生成证书
- rails再体验(第一个程序)
- window.showModalDialog模态对话框 值回传 TreeView无刷新
- 【JS】教你如何在对象内任意位置插入任意属性
- 解决css中存在的几种兼容性问题
- CNN经典模型:GoogLeNet(从Inception v1到v4的演进)
- Vue (响应式原理-模拟-1-vue)
- 使用C语言----修改密码
- 鸿蒙系统的升级名单,定档6月2日!鸿蒙“首批”升级名单公布,共计11款华为机型!...