准备数据

查看系统变量

SHOW VARIABLES LIKE 'slow_query%';

slow_query_log:慢sql日志开启状态

slow_query_log_file:慢sql日志存放位置

SHOW VARIABLES LIKE 'long_query_time';

long_query_time:执行超过多少秒才记录日志

修改系统变量

SET GLOBAL slow_query_log = ON;

SET GLOBAL long_query_time=0.001;

执行修改语句后如果再次查询没有生效,重新打开个窗口再次查询就可以了。

测试结果

执行查询语句

select * from student;

slow.log中的记录

select * from student;

# Time: 2020-08-04T06:09:07.716447Z

# User@Host: root[root] @ localhost [::1] Id: 13

# Query_time: 0.001787 Lock_time: 0.000417 Rows_sent: 2 Rows_examined: 1024

SET timestamp=1596521347;

再次测试更新语句

UPDATE student SET `name` = '李四' WHERE id = 999;

> Affected rows: 1

> 时间: 0.004s

发现也被记录了

UPDATE student SET `name` = '李四' WHERE id = 999;

# Time: 2020-08-04T06:25:11.808408Z

# User@Host: root[root] @ localhost [::1] Id: 13

# Query_time: 0.001236 Lock_time: 0.000092 Rows_sent: 356 Rows_examined: 712

SET timestamp=1596522311;

Time:慢sql发生时间

User@Host:客户端用户和IP

Query_time:查询时间

Lock_time:等待表锁的时间

Rows_sent:语句返回的行数

Rows_examined:语句执行期间从存储引擎扫描的行数

sql执行分析

EXPLAIN

Explain 可以获取 MySQL 中 SQL 语句的执行计划,比如语句是否使用了关联查询、是否使用了索引、扫描行数等。可以帮我们选择更好地索引和写出更优的 SQL 。

使用方法:在查询语句前面加上 explain 运行就可以了。

EXPLAIN UPDATE student SET `name` = '李' WHERE id = 999;

EXPLAIN字段详解

列名

描述

id

在一个大的查询语句中每个SELECT关键字都对应一个唯一的id

select_type

SELECT关键字对应的哪个查询的类型

table

表名

partitions

匹配的分区信息

type

针对单表的访问方法

possible_keys

可能用到的索引

key

实际上使用的索引

key_len

实际使用到的索引长度

ref

当使用索引列等值查询时,与索引列进行等值匹配的对象信息

rows

预估的需要读取的记录条数

filtered

某个表经过搜索条件过滤后剩余记录条数的百分比

Extra

一些额外的信息

select_type详解

select_type的值

解释

SIMPLE

简单查询(不使用关联查询或子查询)

PRIMARY

如果包含关联查询或者子查询

UNION

联合查询中第二个及后面的查询

DEPENDENT UNION

满足依赖外部的关联查询中第二个及以后的查询

UNION RESULT

联合查询的结果

SUBQUERY

子查询中的第一个查询

DEPENDENT SUBQUERY

子查询中的第一个查询,并且依赖外部查询

DERIVED

用到派生表的查询

MATERIALIZED

被物化的子查询

UNCACHEABLE SUBQUERY

一个子查询的结果不能被缓存,必须重新评估外层查询的每一行

type详解

查询性能从上到下依次是最好到最差

type的值

解释

system

查询对象表只有一行数据,且只能用于MyISAM和Memory引擎的表,这是最好的情况

const

基于主键或唯一索引查询,最多返回一条结果

eq_ref

表连接事基于主键或非NULL的唯一索引完成扫描

ref

基于普通索引的等值查询,或者表间等值连接

fulltext

全文检索

ref_or_null

表连接类型是ref,但进行扫描的索引列中可能包含NULL值

index_merge

利用多个索引

unique_subquery

子查询中使用唯一索引

index_subquery

子查询中使用普通索引

range

利用索引进行范围查询

index

全索引扫描

extra详解

Extra常见的值

解释

Using filesort

将用外部排序而不是索引排序,数据较小时从内存排序,否则需要在磁盘完成排序

Using temporary

需要创建一个临时表来存储结构,通常发生对没有索引的列进行GROUP BY时

Using index

使用覆盖索引

Using where

使用where语句来处理结果

Impossible WHERE

对where子句判断的结果总是false而不能选择任何数据

Using join buffer

改值强调了在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果。如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进能。

Using index condition

先条件过滤索引,再查数据

Select tables optimized away

使用某些聚合函数(比如max、min)来访问存在索引的某个字段

mysql常见慢sql,MySQL中慢SQL的查询及原因分析相关推荐

  1. mysql sql rowcount_ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同-阿里云开发者社区...

    MySQL的ROW_COUNT()和ORACLE中的SQL%ROWCOUNT函数作用并不完全相同.从作用上来说,两者都是返回前一个SQL进行UPDATE,DELETE,INSERT操作所影响的行数,但 ...

  2. 【转】在SQL Server中通过SQL语句实现分页查询

    在SQL Server中通过SQL语句实现分页查询 2008年01月06日 星期日 12:28 建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY ...

  3. 在SQL Server中使用SQL Coalesce函数

    This article explores the string manipulation using SQL Coalesce function in SQL Server. 本文探讨了在SQL S ...

  4. 12个MySQL慢查询的原因分析

    1. SQL 没加索引 很多时候,我们的慢查询,都是因为没有加索引.如果没有加索引的话,会导致全表扫描的.因此,应考虑在 where 的条件列,建立索引,尽量避免全表扫描. 反例: select * ...

  5. html5不支持的属性,IE9对HTML5中部分属性不支持的原因分析

    这篇文章主要为大家介绍了IE9对HTML5中部分属性不支持的原因分析,对于了解IE9与HTML5的应用有一定帮助作用,需要的朋友可以参考下 本文较为详细的分析了IE9对HTML5中部分属性不支持的原因 ...

  6. mysql查看执行计划_MySql中如何使用 explain 查询 SQL 的执行计划

    explain命令是查看查询优化器如何决定执行查询的主要方法. 这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的. 1.什么是MyS ...

  7. mysql字段重命名_MySQL中使用SQL语句对字段进行重命名

    MySQL中,如何使用SQL语句来对表中某一个字段进行重命名呢?我们将使用alter table 这一SQL语句. 重命名字段的语法为:alter table change . 现在我们来尝试把tes ...

  8. ef 执行mysql语句_在EF中执行SQL语句

    一.为什么要在EF中执行SQL语句 使用EF操作数据库,可以避免写SQL语句,完成使用Linq实现,但为什么还要在EF中执行SQL语句呢.如果要写SQL语句,完全可以使用ADO.NET来操作数据库.这 ...

  9. mysql 回表查询优化_MySQL中的回表查询与索引覆盖:一次百万级别分页查询使用Limit 从90秒到0.6毫秒的优化...

    这里写目录标题 事故现场 解决方案 提到的"回表查询" InnoDB的索引 什么是回表查询 怎么优化回表查询 事故现场 数据库使用的MySQL,有一个日志表,需要进行分页查询,于是 ...

最新文章

  1. extern “C”的作用详解
  2. Symantec(VeriSign)SSL证书
  3. 【Java面经】非科班渣硕面经
  4. uos命令_【持续更新】UOS个人版实用技巧集锦
  5. NAT,PAT、OSPF的相关配置
  6. 【软件】3DsMax2009 下载百度云盘下载(附教程)
  7. 计算机学课毕业论文,计算机专业毕业论文(精选5篇)
  8. FPGA图像音频通信接口:VGA
  9. 学计算机专业需要买电脑吗高中,麻麻 上大学专业需要用 | 买笔记本电脑_笔记本新闻-中关村在线...
  10. Lesson 10 The loss of the Titanic 内容鉴赏
  11. python复数类型的虚部通过_Python 复数数据类型详解(complex)[学习 Python 必备基础知识][看此一篇就够了]...
  12. 金蝶K3序时簿页面增加物料即时库存显示功能
  13. AUTOSAR Functional Safety
  14. 【Unity】Obi插件系列(六)—— Obi Cloth
  15. 腾讯云服务器搭建网站详细教程(新版)
  16. C语言:从键盘输入一个整数,分别输出它的个位数、十位数、百位数.....
  17. JVM垃圾回收器-CMS并发标记清除
  18. 通达信公式-均线向上
  19. 中国电信 合约协议   转载
  20. mac设置开机启动app_Mac App无法启动? 这是解决方法

热门文章

  1. 计算机设计大赛海报素材,2015中国国际海报双年展设计大赛获奖作品
  2. 电动机绕组的接线舞曲
  3. 按键精灵在屏幕上显示文本渐开脚本代码
  4. 传统的获客渠道方式对比包获客,你更认可哪一种?
  5. 第三方库下载教程(三种方法)
  6. 云计算机的服务类型,关于“云计算”的服务类型(上)
  7. 终端安全管理:守住最后的堡垒
  8. windows密码抓取的多种方法
  9. autocad全国计算机考试试题,2015年职称计算机考试试题:AutoCAD模拟题及答案
  10. 微投屏app|微投屏手机版下载