尚硅谷-mysql专项训练-数据库服务的优化-慢查询-EXPLAIN字段

1.SQL调优的3个步骤:观察和行动


  • SQL调优的三个步骤:

    2.查看系统性能参数


    3.统计SQL的查询成本:last_query_cost 页数量

慢查询日志

  • long_query_time 的值是判断是否为慢查询的标准
  • 默认慢查询日志不开启,手动开启慢查询日志
  • 开启慢查询日志后
  • 修改long_query_time的阈值,设置为1秒
  • 在配置文件中直接设置好之前的所有配置;
  • 查看超过阈值的慢查询记录有多少条
  • 查出有2条慢查询SQL

    找出慢查询的语句
  • 查询次数min_examined_row_limit,如果设置为3,就是3次超过设置的long_query_time阈值,就记录到慢查询日志中,而不是某一次偶发性超过阈值。

慢查询日志分析工具:mysqldumpslow

  • 是在根目录环境下执行,而不是mysql的命令环境中

  • 使用完就关闭慢查询日志

  • 删除慢查询日志
  • 查询SQL执行成本
  • 开启show profile
  • 查询最近一次的开销
  • 查询后发现,executing特别慢

分析慢查询的语句 EXPLAIN

  • EXPLAIN的作用
  • 书写格式和基本语法

  • 主要还是SELECT
  • table 表名

  • id,有几个select就有几个id;
  • 注意,可能会进行重写
  • Union

  • select_type

  • select_type的SIMPLE
  • select_type的PRIMARY和Union
  • 最左边的是S1,所以是PRIMARY
  • 其余的是S2,所以是Union
  • select_type SUBQUERY
  • 在外层的是PRIMARY,在内层的子查询是SUBQUERY
  • DEPENDENT_SUBQUERY
  • DEPENDENT_UNION
  • DERIVED
  • MATERIALIZED
  1. partitions

  • type(重点)
  • SYSTEM MyISAM统计是精确的
  • ALL InnoDB统计是不精确的

  • CONST
  • EQ_REF
  • ref
  • ref or null
  • index_merge
  • UNIQUE_SUBQUERY
  • RANGE
  • INDEX
  • 慢查询级别从好到坏

6.possible_key和key,可能用到的索引和实际用到的索引

  • key_len(重点)
  • ref
  • rows(重点)预估的需要读取的记录条数
  • filtered

  • Extra(重点)













    规避临时表

EXPLAIN的进一步使用

1.传统格式

2.JSON格式

  1. TREE格式
相关推荐
Goat恶霸詹姆斯36 分钟前
mysql常用语句
数据库·mysql·oracle
大模型玩家七七1 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
曾经的三心草1 小时前
redis-9-哨兵
数据库·redis·bootstrap
明哥说编程1 小时前
Dataverse自定义表查询优化:D365集成大数据量提速实战【索引配置】
数据库·查询优化·dataverse·dataverse自定义表·索引配置·d365集成·大数据量提速
xiaowu0801 小时前
C# 拆解 “显式接口实现 + 子类强类型扩展” 的设计思想
数据库·oracle
讯方洋哥1 小时前
HarmonyOS App开发——关系型数据库应用App开发
数据库·harmonyos
yuanmenghao2 小时前
Linux 性能实战 | 第 7 篇 CPU 核心负载与调度器概念
linux·网络·性能优化·unix
惊讶的猫2 小时前
Redis持久化介绍
数据库·redis·缓存
Apple_羊先森2 小时前
ORACLE数据库巡检SQL脚本--19、磁盘读次数最高的前5条SQL语句
数据库·sql·oracle
全栈前端老曹3 小时前
【MongoDB】Node.js 集成 —— Mongoose ORM、Schema 设计、Model 操作
前端·javascript·数据库·mongodb·node.js·nosql·全栈