MySQL查询计划输出列的含义

"一:MySQL查询计划输出列的含义:
1.id:每个被独立执行的操作的标识,表示对象被操作的顺序;id值越大,先被执行;如果相同,执行顺序从上到下。
2.select_type:查询中每个select子句的类型。
3.table:名字,被操作的对象的名称,通常是表名,但有其他格式。
4.partitions:匹配的分区信息(对于非分区表值为NULL)。
5.type:连接操作的类型。
6.possible_keys:备选的索引(列出可能被使用到的索引)。
7.key:经优化器选定的索引;常使用ANALYZE TABLE命令,可以使优化器正确地选择索引。
8.key_len:被优化器选定的索引键的长度,单位是字节。
9.ref:表示本行被操作的对象的参照对象(被参照的对象可能是一个常量用const表示,也可能是其他表的key指向的对象)。
10.rows:查询执行所扫描的元组的个数(对于InnoDB,此值是估计值)。
11.filtered:按照条件表上数据被过滤的元组个数的百分比,rows x filtered/100可以求出过滤后的元组数即实际的元组数。
12.Extra:MySQL查询优化器执行查询的过程中对查询计划的重要补充信息。"

时间: 2024-10-01 06:07:47

MySQL查询计划输出列的含义的相关文章

MySQL的查询计划中ken_len的含义

本文首先介绍了MySQL的查询计划中ken_len的含义:然后介绍了key_len的计算方法:最后通过一个伪造的例子,来说明如何通过key_len来查看联合索引有多少列被使用. key_len的含义 在MySQL中,可以通过explain查看SQL语句所走的路径,如下所示: mysql> create table t(a int primary key, b int not null, c int not null, index(b)); Query OK, 0 rows affected (0

MySQL查询计划学习

以select_type为线索: 1) SIMPLE:简单的SELECT,不实用UNION或者子查询 mysql> explain select * from t2; +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | r

mysql中explain输出列之id的用法详解

参考mysql5.7 en manual,对列id的解释: The SELECT identifier. This is the sequential number of the SELECT within the query. The value can be NULL if the row refers to the union result of other rows. In this case, the table column shows a value like <unionM,N>

mysql查询计划

1:客户端发起查询请求 2:服务器接收到请求后,先查询缓存 如果缓存命中,直接返回数据给客户端 否则,解析sql 3:sql解析完成后,进行预处理 4:有查询优化器生存查询计划 5:通过api接口调用存储引擎 去磁盘访问需要查询的数据,再通过查询执行引擎返回给客户端 值得一提的是:mysql的客户端与服务端通信,采用的是半双工通信,即永远是只有一方在发送数据. 客户端发送完请求后,只能等待服务端的数据返回,这种协议让mysql通信简单快速,但也限制了流量包,在客户端无法 分块的发送请求,而服务端

mysql 从left join 到join到查询计划到联合索引的原理

left join left join在无脑使用中,会大表驱动小表,触发笛卡尔集,效率慢 join会自动小表驱动大表 参考: 从一个MySQL left join优化的例子加深对查询计划的理解 http://luxuryzh.iteye.com/blog/1976004 相关的explain查询计划解释 type分为system/const/eq_ref/ref/range/index/ALL等好几类,连接的效率从前往后 好..> 差 all:木有用到索引 index,用到 range,索引的b

MySQL执行计划显示与执行过程不符合

一 建表和现象的过程如下 CREATE TABLE t1 (id1 INT, a1 INT, b1 INT, PRIMARY KEY(id1));CREATE TABLE t3 (id3 INT UNIQUE, a3 INT, b3 INT); INSERT INTO t1 VALUES (1, 1, NULL);INSERT INTO t3 VALUES (1, 1, NULL); mysql> select * from (select * from t1 where id1 =(selec

【转】mysql执行计划介绍

原文地址:http://www.jb51.net/article/43306.htm 1.查看mysql执行计划 explain SELECT * from shippingorder where STATUS<>4; 2.执行计划包含的信息 (1).id 含义,指示select字句或操作表的顺序. eg1:id相同,执行顺序从上到下,下面的执行计划表示,先操作t1表,然后操作t2表,最后操作t3表. eg2:若存在子查询,则子查询(内层查询)id大于父查询(外层查询),先执行子查询.id越大

MySQL执行计划显示与执行过程不符合一例

一 建表和现象的过程如下 CREATE TABLE t1 (id1 INT, a1 INT, b1 INT, PRIMARY KEY(id1));CREATE TABLE t3 (id3 INT UNIQUE, a3 INT, b3 INT); INSERT INTO t1 VALUES (1, 1, NULL);INSERT INTO t3 VALUES (1, 1, NULL); mysql> select * from (select * from t1 where id1 =(selec

MySQL执行计划解读

MySQL执行计划解读 http://www.cnblogs.com/ggjucheng/archive/2012/11/11/2765237.html MySQL执行计划解读 Explain语法 EXPLAIN SELECT -- 变体: 1. EXPLAIN EXTENDED SELECT -- 将执行计划"反编译"成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT -- 用于分区表