原文地址:http://www.cnblogs.com/hailexuexi/archive/2011/11/20/2256020.html

Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。

Explain语法:explain select … from … [where ...]

例如:explain select * from news;

输出:

+----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+

下面对各个属性进行了解:

1、id:这是SELECT的查询序列号

2、select_type:select_type就是select的类型,可以有以下几种:

SIMPLE:简单SELECT(不使用UNION或子查询等)

PRIMARY:最外面的SELECT

UNION:UNION中的第二个或后面的SELECT语句

DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询

UNION RESULT:UNION的结果。

SUBQUERY:子查询中的第一个SELECT

DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询

DERIVED:导出表的SELECT(FROM子句的子查询)

3、table:显示这一行的数据是关于哪张表的

4、type:这列最重要,显示了连接使用了哪种类别,有无使用索引,是使用Explain命令分析性能瓶颈的关键项之一。

结果值从好到坏依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

一般来说,得保证查询至少达到range级别,最好能达到ref,否则就可能会出现性能问题。

5、possible_keys:列指出MySQL能使用哪个索引在该表中找到行

6、key:显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL

7、key_len:显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。使用的索引的长度。在不损失精确性的情况下,长度越短越好

8、ref:显示使用哪个列或常数与key一起从表中选择行。

9、rows:显示MySQL认为它执行查询时必须检查的行数。

10、Extra:包含MySQL解决查询的详细信息,也是关键参考项之一。

Distinct
一旦MYSQL找到了与行相联合匹配的行,就不再搜索了

Not exists
MYSQL 优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,

就不再搜索了

Range checked for each

Record(index map:#)
没有找到理想的索引,因此对于从前面表中来的每一 个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一

Using filesort
看 到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来 排序全部行

Using index
列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表 的全部的请求列都是同一个索引的部分的时候

Using temporary
看到这个的时候,查询需要优化了。这 里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上

Using where
使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index, 这就会发生,或者是查询有问题

其他一些Tip:

  1. 当type 显示为 “index” 时,并且Extra显示为“Using Index”, 表明使用了覆盖索引。

转载于:https://www.cnblogs.com/Nick-Hu/p/8488652.html

18.mysql优化(三)–explain分析sql语句执行效率相关推荐

  1. mysql 执行效率命令_MySQL优化--explain 分析sql语句执行效率

    MySQL优化--explain 分析sql语句执行效率 explain 命令 explain 命令在解决数据库性能上市第一推荐使用命令,大部分的性能问题可以通过此命令来简单解决,explain可以用 ...

  2. explain ref_数据库查询优化:使用explain分析sql语句执行效率

    对于复杂.效率低的sql语句,我们通常是使用explain sql 来分析sql语句,这个语句可以打印出,语句的执行过程.这样方便我们分析,进行优化. 首先,说一下,explain查询出来的数据如何分 ...

  3. sql语句执行效率测试的sql语句。

    sql语句执行效率测试的sql语句. 注解: SET STATISTICS PROFILE ON:显示分析.编译和执行查询所需的时间(以毫秒为单位). SET STATISTICS IO ON:报告与 ...

  4. 数据库索引--SQL语句执行效率、分析及优化

    数据库表中字段上创建的索引,在写SQL语句进行查询时,索引可能会被使用到,也肯能因为SQL语句导致索引在此条SQL语句执行时索引无效. 聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的解释是:索 ...

  5. 详解MySQL的逻辑架构和SQL语句执行流程

    文章目录 1. 逻辑架构 1.1 连接层 1.2 服务层 1.3 引擎层 1.3.1 InnoDB 存储引擎 1.3.2 MyISAM 存储引擎 1.3.3 其他存储引擎 1.4 存储层 3. SQL ...

  6. 查找100 sql oracle,Oracle中SQL语句执行效率的查找与解决

    一.识别占用资源较多的语句的方法(4种方法) 1.测试组和最终用户反馈的与反应缓慢有关的问题. 2.利用V_$SQLAREA视图提供了执行的细节.(执行.读取磁盘和读取缓冲区的次数) • 数据列 EX ...

  7. 【PHP面试题】请简述项目中优化SQL语句执行效率的方法,从哪些方面,SQL语句如何分析?

    文章目录 一.考点 1.查找分析查询速度慢的原因 1)分析SQL查询慢的方法 2)使用 show profile 3)使用 show status 4)使用 show processlist 5)使用 ...

  8. mysql for 语句执行顺序_MySQL使用profile分析SQL语句执行过程

    分析SQL执行带来的开销是优化SQL的重要手段.在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析.该参数可以在全局和session级别来设置.对于全局级别则作用于整个MySQL ...

  9. Mysql数据库Sql语句执行效率-Explain

    为什么80%的码农都做不了架构师?>>>    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语 ...

最新文章

  1. View Horizon Mirage安装手册(一)——Horizon Mirage介绍
  2. 第十一周项目实践1 图基本算法库
  3. tcp keepalive
  4. mysql参数之innodb_buffer_pool_size大小设置
  5. lintcode-137-克隆图
  6. ernie和Bert的参数理解
  7. 伪装nginx版本防止***web服务器
  8. 银行核心系统是什么?
  9. 7.3 超标量流水线
  10. Buoyant的Conduit服务网格正式成为Linkerd 2
  11. 谈下离开北京到杭州的感受
  12. 日本多城现共享单车 日网友:感受到中国式刺激
  13. 第五天 01-ftp服务器使用及arp欺骗获取ftp账号密码
  14. Ubuntu18.04下安装搜狗输入法
  15. Webpack学习笔记(官网教程)
  16. zigbee芯片厂家对比
  17. What is troll?
  18. 大数据如何在前端流畅展示
  19. 淘宝推家居版小红书,阿里躺平能否打开家居装修的流量入口?
  20. ASUS|华硕 天选4 FX507VV 工厂系统 带ASUS Recovery恢复功能

热门文章

  1. Navicat Premium 简体中文版 12.0.16 以上版本国外官网下载地址(非国内)
  2. RPC框架实现思路浅析
  3. MVC如何分离Controller与View在不同的项目?
  4. jsp连接Sql Server 2000数据库
  5. 解决Git 重复输入用户名和密码的问题
  6. down perm什么意思_没想到“羽绒服”竟叫down coat!为啥有个down?
  7. 见过一个一个拉新地推没见过这么多一起推
  8. 有多少人自驾过独库公路?
  9. 但是的近义词是什么,怎么用但是造句?
  10. 百度和腾讯之间就差一个好的投资团队