使用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。还需要多加练习。

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

相关文章推荐

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
  • 1635

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

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

Mysql之sql语句优化:explain

explain的列分析 select_type 查询类型 table 查询针对的表 possible_key 可能用到的索引 key 最终用的索引 key_len 使用的索引的最大长度 type列 ...
  • kwinH
  • kwinH
  • 2017-02-17 09:57
  • 172

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

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

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

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

mysql 利用explain优化sql

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法,在select语句前加上explain就可以了,如: ex...

PostgreSQL 使用anto_explain自动记录超时SQL的执行计划

1. auto_explain 模块简单介绍   auto_explain 模块能够自动记录慢查询语句的执行计划,而不需要手工执行 Explain 命令,在比较大的业务系统中,这个模块专门用来跟踪...

MySQL 使用explain分析sql语句的查询效率(二)

本文将继续上文讲解其他与效率相关的参数 explain所返回的其他参数key为使用的索引,而使用的索引又影响着连接类型type,它们共同决定了可能扫描行数rows 参数解析 (4)type ...

使用MySQL中的EXPLAIN解释命令来检查SQL

我们看到许多客户的系统因为SQL及数据库设计的很差所以导致许多性能上的问题,这些问题不好解决,但是可以采用一套简单的策略来检查生产系统,发现并纠正一些共性问题。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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