标签:
在介绍怎么查看MySQL执行计划前,我们先来看个后面会提到的名词解释:
覆盖索引: MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件 包含所有满足查询需要的数据的索引称为 覆盖索引(Covering Index) 如果要使用覆盖索引,一定要注意select列表中只取出需要的列,不可select *,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降
EXPLAIN查看执行计划的一些局限:
*************************** 1. row *************************** id: 1
select_type: SIMPLE table: t1 type: ref possible_keys: idx_customer_no key: idx_customer_no key_len: 99 ref: const rows: 1 Extra: Using index condition; Using where 1 row in set (0.00 sec)
id:是一组数字,表示查询中执行select子句或操作表的顺序。 如果id相同,则执行顺序从上至下; 如果是子查询,id的序列号会递增,id越大则优先级越高,越先会被执行。 id如果相同,则可以认为是一组,从上往下顺序执行,所有组中,id越高,优先级越高,越容易执行。
select_type:取值有simple,primary,subquery,derived,union,unionresult
table:显示这一行的数据是关于哪张表的
type:访问类型,表示在表中找到所需行的方式,常见的类型有all,index,range,ref,eq_ref,const,system,null性能从左至右由差至好。
possiblekey:表示能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引被列出,但不一定被查询使用。
key:表示查询时使用的索引。若查询中使用了覆盖索引,则该索引仅出现在key中。
key_len:表示索引所使用的字节数,可以通过该列结算查询中使用的索引长度
ref:表示上述表的链接匹配条件,即哪些列或常量可被用于查找索引列上的值。
rows:表示根据mysql表统计信息及索引选用情况,估算找到所需记录要读取的行数。
extra:表示不在其他列并且也很重要的额外信息。
标签:
原文地址:http://www.cnblogs.com/janehoo/p/5819041.html