MYSQL 执行计划

来源:互联网 发布:云杉网络 融资 编辑:程序博客网 时间:2024/05/16 05:17

explain select * from table;    这样可以查看到一个语句的执行计划。

mysql> explain select Orgid,Stkcd,Secnme from CO_CRLSECwhere Stkcd in (select Seccd from IDX_SmpChgwhere Indextype=1 and Indexcd=000300and Enddt is null);+----+--------------------+------------+------+---------------+------+---------+------+--------+-------------+| id | select_type        | table      | type | possible_keys | key  | key_len | ref  | rows   | Extra       |+----+--------------------+------------+------+---------------+------+---------+------+--------+-------------+|  1 | PRIMARY            | CO_CRLSEC  | ALL  | NULL          | NULL | NULL    | NULL |   3029 | Using where ||  2 | DEPENDENT SUBQUERY | IDX_SmpChg | ALL  | NULL          | NULL | NULL    | NULL | 129083 | Using where |+----+--------------------+------------+------+---------------+------+---------+------+--------+-------------+2 rows in set


解释:
1. select_type: 表示SELECT 的类型,常见的取值有simple(简单表,即不使用表连接或者子查询),primary(主查询,即外层的查询),union(union中的第二个或者后面的查询语句),subquery(子查询中的第一个SELECT 语句)等。

2.table: 输出结果集的表。

3.type: 表示表的连接类型,性能由好到差的连接类型为: system(表中公有一行,即常量表),const(单表中最多有一个匹配行,例如primary key 或者unique index),eq_ref(对于前面的每一行,在此表中只查询一条记录,简单的来说,就是多表连接中使用PRIMARY KEY 或者UNIQUE INDEX),ref(与eq_ref类似,区别在于不是使用primary key 或者unique index,而是使用普通的索引),ref_or_null(与ref类似,区别在于条件中包含对NULL的查询),index_merge(索引合并优化), unique_subquery(in的后面是一个查询主键字段的子查询), index_subquery(对于前面的每一行,都通过查询索引来得到数据), all(对于前面的每一行,都通过全表扫描来得到数据)。

4.possible_keys: 表示查询时,可能使用的索引。

5.key: 表示实际使用的索引。

6.key_len:索引字段的长度。

7.rows: 扫描行的数量。

8.extra:执行情况的说明和描述。