阅读 353

navicat查看执行计划,mysql执行计划老叶

一。什么是数据库执行计划:

利用一个SQL语句, 你可能要Server取出所有News表中的信息. 当Server收到的这条SQL的时候, 第一件事情并不是解析它. 如果这条SQL没有语法错误, Server才会继续工作. Server会决定最好的计算方式. Server会选择, 是读整个News表好呢, 还是利用索引会比较快些. Server会比较所有可能方法所耗费的资源. 最终SQL语句被物理性执行的方法被称做执行计划或者是查询计划(数据库服务器在执行sql语句之前会制定几套执行计划!看那个机会消耗的系统资源少,就是用那套计划!)

二。执行计划的生成方法:

explain select …………….(在相应的select前面加explain即可)

三。执行计划的查看:

SQL执行结果:

每列含义:

\|/. Id :包含一系列数字,表示select子句或操作表在查询中的执行顺序。 (执行顺序从大到小; 如果id值相同,则执行顺序为从上到下。 )

\|/. Select_type:表示查询中每个select子句的类型。 (简单或复杂) :

1. SIMPLE (简单)查询不包含子查询或UNION (联合)。

2 .如果PRIMARY (基本,首选)查询包含复杂的子部分,则最外层查询将被标记为PRIMARY。

3. SUBQUERY (子查询):SELECT或WHERE列表中包含标记为SUBQUERY的子查询。

4. DERIVED (派生):FROM列表中的子查询标记为DERIVED。

5 .如果第二个SELECT出现在UNION之后,它将被标记为UNION。

如果UNION包含在FROM子句的子查询中,则外部SELECT标记为: DERIVED。

从UNION表中检索结果的SELECT表示为UNION RESULT (联接的结果)。

\|/. table :表名称

\|/. Type :也称为访问类型,指示MySQL如何在表中查找所需的行。 一般包括以下几个方面。

1. ALL:Full Table Scan,MySQL进行全表扫描。

2 .索引:全索引扫描,索引与全索引相区别,索引类型只遍历索引树。

3 .范围:范围索引扫描。 扫描索引从某个点开始,并返回与值域匹配的行。 常见于between、等查询中。

4. ref :非唯一索引扫描。 返回与单个值匹配的所有行。 常用于使用非唯一索引或唯一索引的非唯一前缀进行搜索。

5. eq_ref :唯一的索引扫描。 对于每个索引关键字,表中只有一条记录匹配。 常用于主键或唯一索引扫描。

6. const,system:MySQL在优化查询的某些部分并将其转换为常量时使用这些类型的访问。 通过将主键放入where列表中,MySQL可以将查询转换为常量。

7. NULL:MySQL在优化过程中分解语句,甚至不需要在运行时访问表或索引。

\|/. possible _ keys :指示MySQL可用于在表中查找行的索引。 如果与查询相关的字段具有索引,则会列出该索引,但不一定由查询使用。

\|/. key :显示MySQL在查询中实际使用的索引,如果没有使用索引,则显示为NULL。 如果查询使用了封面索引,则该索引仅显示在key列表中。

\|/. key_len :表示索引中使用的字节数,并允许您计算查询中使用的索引的长度。

\|/. ref :表示将使用这些列或常量来检索上表中的连接条件,即索引列中的值。

3|/. rows :表示MySQL根据表统计信息和索引选择情况,估算为了找到所需记录而必须读取的行数。

\|/. Extra :包含不适合在其他列中显示但非常重要的其他信息。

1.using where :指示在存储引擎中记录MySQL服务器后执行“后过滤器”。 如果查询不能使用索引,usingwhere的作用只是警告MySQL在where子句中过滤结果集。

2.using :表示MySQL必须使用临时表来存储结果集。 常用于排序和查询分组。

3.using filesort :在MySQL中不能使用索引进行排序的操作称为“文件排序”。

四。数据库执行计划的局限性:

EXPLAIN不会告诉您触发器、有关存储过程的信息或用户定义的函数对查询的影响

EXPLAIN不考虑各种cache (cache通常是指缓存SRAM )。 SRAM称为静态存储器,“静态”意味着将数据写入SRAM后,除非重新写入新数据或关闭电源,否则写入的数据不会改变。)

无法在EXPLAIN中查看MySQL在执行查询时所做的优化工作。

部分统计信息是估计的,不是准确的值。

EXPALIN只能解释选择操作。 除此之外的操作请改写为SELECT,然后确认执行计划。 (mysql5.6版本支持直接显示。)

原文地址: https://www.cn blogs.com/ruian nan/p/7707534.html

文章: https://www.cn blogs.com/klv Chen/p/10137117.html


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐