Explain被称为执行计划,在语句之前增加 explain 关键字,MySQL会在查询上设置一个标记,模拟MySQL优化器来执行SQL语句,执行查询时,会返回执行计划的信息,并不执行这条SQL。(注意,如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中)。 Explain可以用来分析SQL语句和表结构的性能瓶颈。通过explain的结果,
mysql> explain select (select 1 from actor where id = 1) from (select * from film where id = 1) der; +---+---+---+---+---+---+---+---+---+---+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +---+---+---+...
5.1、覆盖索引定义:mysql执行计划explain结果里的key有使用索引,如果select后面查询的字段都可以从这个索引的树中获取,这种情况一般可以说是用到了覆盖索引,extra里一般都有using index;覆盖索引一般针对的是辅助索引,整个查询结果只通过辅助索引就能拿到结果,不需要通过辅助索引树找到主键,再通过主键去主键索引树里获取其它...
EXPLAIN作为MySQL的性能分析神器,读懂其结果是很有必要的,然而我在各种搜索引擎上竟然找不到特别完整的解读。都是只有重点,没有细节(例如type的取值不全、Extra缺乏完整的介绍等)。 所以,我肝了将近一个星期,整理了一下。这应该是全网最全面、最细致的EXPLAIN解读文章了,下面是全文。 文章比较长,建议收藏。 TIPS本...
Explain是Mysql自带的sql执行的性能分析器。通过 explain 命令获取 select 语句的执行计划。模拟优化器执行SQL语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈。Explain可以分析出表的读取顺序、数据读取操作的操作类型、哪些索引可以使用、哪些索引被实际使用、表之间的引用、每张表有多少...
NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。 下面进行实例讲解 #表结构#索引在coupon_id和status_type上CREATETABLE`user_coupons`(`id`int(10)unsignedNOTNULLAUTO_INCREMENTCOMMENT'id',`key_id`varchar(255)NOTNULLCOMMENT'key',`coupo...
EXPLAIN是MySQl必不可少的一个分析工具,主要用来测试sql语句的性能及对sql语句的优化,或者说模拟优化器执行SQL语句。在select语句之前增加explain关键字,执行后MySQL就会返回执行计划的信息,而不是执行sql。但如果from中包含子查询,MySQL仍会执行该子查询,并把子查询的结果放入临时表中。它显示了mysql如何使用索引来...
1、什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。 MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的。 应用层,主要负责与客户端进行交互...
EXPLAIN ステートメントは、EXPLAIN 出力の一部ではないが、EXPLAIN の後に SHOW WARNINGS ステートメントを発行することで表示できる追加 (「extended」) 情報を生成します。 MySQL 8.0.12 では、拡張情報は SELECT, DELETE, INSERT, REPLACE および UPDATE ステートメントで使用できます。 8.0.12...
Table 7.2 DBT-3 Explain Tutorial Query Comparison TypePossible keysKeyRows ScannedDuration (seconds)Extra infoRows returned all NULL NULL 1.50M 1.201 Using where 18 range i_o_orderdate i_o_orderdate 32642 0.281 Using index condition; Using where 18 range i_o_orderdate, i_o_clerk i_o_...