使用explain优化sql

原创 2017年07月10日 15:17:12

       对于复杂、效率低的sql语句,我们通常是使用explain sql 来分析sql语句,这个语句可以打印出,语句的执行过程。这样方便我们分析,进行优化。
sql语句查询
       首先,说一下,explain查询出来的数据如何分析。
table :这一列是查询设计的表。
type :很重要的一列,显示了查询使用了那种类型,是否使用的索引,能反映出语句的质量。一般这个指标从好到坏依次是:system>const>eq_ref>ref(最好能达到)>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>ALL
为了保证查询至少达到range级别。最好达到ref,否则的话,只能说明这条语句性能有待提高。

  • ref 表示所有具有匹配的索引的行都被用到
  • range索引范围内查找
  • index全索引树扫描
  • all全表扫描

possible_keys:指出mysql在试用了哪个索引在该表中查找行。如果没有使用任何索引,就显示的NULL,可以用于对优化时的索引调整。
key:显示使用的索引,如果没有使用,则显示NULL
key_len:显示的是所使用的索引长度,如果没使用,则是NULL。当然,在使用索引的情况下,索引长度越小。效果越明显。
ref:显示使用那个列或常数雨key一起从表中选择行。
rows:执行查询的行数,如果行数越小,说明查询次数越少,效率越高。
extra:包含查询mysql解决查询的详细信息。

       在上面的查询解释表中,type为ALL所以,这个查询是全表扫描,并没有使用索引。所以,我们要分析这条语句中,哪个查询条件,适合添加索引。这个要根据具体问题具体分析了。
接下来,我对role表中的priority_level添加索引,添加后执行结果如下:
优化后
       查询次数变少了。而且也用到了刚才加的pl_idx索引。查询效率提高了。当然这只是优化了一小步。也只是初步认识了一下explain。还需要多加练习。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Echarts-axislabel文字过长导致显示不全或重叠

先看两张图   按目前情况,官方并为对axislabel的高度或者宽度做调整。所以解决方案只能从其他方案下手 解决方案有几种   第一种为上图解决方案 设置...

MySQL执行计划解读 转他人文章

Explain语法 EXPLAIN SELECT …… 变体: 1. EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNING...
  • c_enhui
  • c_enhui
  • 2013年06月04日 13:02
  • 20574

mysql使用explain优化sql语句

mysql 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。最终目标是提交 select语句查找数据行,而不是排除数据行。优化器试图排除数据行...
  • nuli888
  • nuli888
  • 2016年09月04日 23:28
  • 343

mysql执行sql语句优化分析命令explain命令小记

explain是用来分析sql语句,帮助优化的一个命令。她可以很详细的告诉你的sql语名出现的问题所在,以及是否用到索引。真的很好用。大家必须要会用哦! explain的语法如下:   SQL Co...

SQL优化:索引,explain

从100号部门开始,创建10个部门。 [sql] view plaincopy delimiter $$   drop procedure insert_dept $$   c...

【MySQL笔记】SQL优化利器 - explain命令的输出格式详解

有MySQL使用经验的同学在实际项目中可能会遇到SQL慢查询的场景,有些场景很容易定位问题所在(如单表操作有慢查询SQL时,仔细check SQL语句通常很容易定位索引问题),而有些复杂业务场景(如多...
  • slvher
  • slvher
  • 2015年02月14日 22:12
  • 1743

EXPLAIN sql优化方法(2) Using temporary ; Using filesort

优化GROUP BY语句    默认情况下,MySQL对所有GROUP BYcol1,col2...的字段进行排序。这与在查询中指定ORDER BYcol1,col2...类似。因此,如果显式包括一...

作为开发者必须掌握的mysql操作sql语句优化 - show processlist and explain

在我们实际开发过程中,优化几乎很少贯穿整个项目开发周期,性能也是我们在开发时很少关注的,为什么?功能都做不完谁还去关心性能,能够实现功能就不错了! -- 绝大多数加班开发者的心声!!那么我们开发完了之...

【MySql性能优化二】利用explain进行查询和分析sql语句

在mysql数据库中为我们提供了explain方法可以通过它来帮助我们分析我们的sql语句。 登录mysql后,具体使用如下这里的了例子都以上篇博客中安装的实例数据库sakila为例: explain...

mysql 利用explain优化sql

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法,在select语句前加上explain就可以了,如: ex...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用explain优化sql
举报原因:
原因补充:

(最多只允许输入30个字)