美文网首页
MySQL解析查询 explain

MySQL解析查询 explain

作者: 编程放大镜 | 来源:发表于2022-05-01 15:37 被阅读0次

explain查询sql执行计划,各列含义:
table:表名;
type:连接的类型
-const:主键、索引;
-eq_reg:主键、索引的范围查找;
-ref:连接的查找(join)
-range:索引的范围查找;
-index:索引的扫描;
-all:全表扫描;
possible_keys:可能用到的索引;
key:实际使用的索引;
key_len:索引的长度,越短越好;
ref:索引的哪一列被使用了,常数较好;
rows:mysql认为必须检查的用来返回请求数据的行数;
extra:using filesort、using temporary(常出现在使用order by时)时需要优化。
-Using filesort 额外排序。看到这个的时候,查询就需要优化了
-Using temporary 使用了临时表。看到这个的时候,也需要优化

type列的值,type是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、index和ALL

查询SQL

  • 可通过开启慢查询日志来找出较慢的SQL
  • 不做列运算:SELECT id WHERE age + 1 = 10,任何对列的操作都将导致表扫描,它包括数据库教程函数、计算表达式等等,查询时要尽可能将操作移至等号右边
  • sql语句尽可能简单:一条sql只能在一个cpu运算;大语句拆小语句,减少锁时间;一条大sql可以堵死整个库
  • 不用SELECT *
  • OR改写成IN:OR的效率是n级别,IN的效率是log(n)级别,in的个数建议控制在200以内
  • 不用函数和触发器,在应用程序实现
  • 避免%xxx式查询
  • 少用JOIN
  • 使用同类型进行比较,比如用'123'和'123'比,123和123比
  • 尽量避免在WHERE子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描
  • 对于连续数值,使用BETWEEN不用IN:SELECT id FROM t WHERE num BETWEEN 1 AND 5
  • 列表数据不要拿全表,要使用LIMIT来分页,每页数量也不要太大

一问一答
如何开启MySQL慢查询日志?
配合3个变量 slow_query_log、 slow_query_log_file、 long_query_time
查看慢查询相关参数:
show variables like 'slow_query%’;
show variables like 'long_query_time’;

pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

相关文章

  • MySQL解析查询 explain

    explain查询sql执行计划,各列含义:table:表名;type:连接的类型-const:主键、索引;-eq...

  • MySQL 索引及查询优化总结-2018-03-20

    MySQL 索引及查询优化总结 文章《MySQL查询分析》讲述了使用MySQL慢查询和explain命令来定位my...

  • Innodb 索引

    explain1explain2MySQL索引原理及慢查询优化项目中常用的19条MySQL优化mysql 中 my...

  • 「Mysql索引原理(十三)」索引案例2-避免多个范围条件

    什么是范围条件? 从EXPLAIN的输出很难区分MySQL是要查询范围值,还是查询列表值。 EXPLAIN使...

  • MySQL索引-Explain详解

    EXPLAIN用于获取查询执行计划(即 MySQL 如何执行查询的解释) 当EXPLAIN与可解释语句(SELEC...

  • 查看Mysql执行计划

    1、MySQL语法 MySql提供了EXPLAIN语法用来进行查询分析,在SQL语句前加一个”EXPLAIN”即可...

  • MySQL执行计划

    什么是Explain Explain被称为执行计划,在语句之前增加 explain 关键字,MySQL 会在查询上...

  • MySQL 索引及查询优化总结

    本文由云+社区发表 文章《MySQL查询分析》讲述了使用MySQL慢查询和explain命令来定位mysql性能瓶...

  • MySQL EXPLAIN详解

    MySQL EXPLAIN详解 MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,该文主要讲解expl...

  • Mysql执行计划

    Mysql支持使用EXPLAIN 语句来获取执行查询语句的信息,只需要将EXPLAIN关键字添加到查询语句前面即可...

网友评论

      本文标题:MySQL解析查询 explain

      本文链接:https://www.haomeiwen.com/subject/dgfdyrtx.html