视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL查询分析器EXPLAIN或DESC_MySQL
2020-11-09 18:20:55 责编:小采
文档


MySQLexplain

bitsCN.com
MySQL查询分析器EXPLAIN或DESC MySQL可以通过EXPLAIN或DESC来查看并分析SQL语句的执行情况,如下需要计算2006年所有公司的销售额,需要关联sales表和company表,并且对money字段做求和操作,相应SQL如下:
Sql代码 EXPLAIN SELECT SUM(money) FROM sales s,company c WHERE s.company_id=c.id AND s.year=2006 /G; *************************** 1. row *************************** id: 1 select_type: SIMPLE table: s type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 1000 Extra: Using where *************************** 2. row *************************** id: 1 select_type: SIMPLE table: c type: ref possible_keys: index_company_id key: index_company_id key_len: 5 ref: sakila.c.company_id rows: 1 Extra: Using where; Using index 列的说明: select_type: 表示SELECT的类型,常见的有下面几种 SIMPLE: 简单表,不使用连接或子查询的 PRIMARY: 主查询,即外层的查询 UNION: UNION中的第二个或者后面的查询语句 SUBQUERY: 子查询中的第一个SELECT table: 输出结果集的表 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: 与unique_subquery类似,区别在于in的后面是查询非唯一索引字段的子查询 range: 单表中的范围查询 index: 对于前面的每一行,都通过查询索引来得到数据 all: 对于前面的每一行,都通过扫描全表来得到数据 possible_keys: 查询时可能用到的索引 key: 查询时实际使用到的索引 key-len: 索引字段的长度 rows: 扫描行的数量 Extra: 执行情况的说明和描述 通过EXPLAIN的分析,确认在上面的例子中是对sales表的全表扫描导致效率不理想,通过对sales表创建索引: Sql代码 CREATE INDEX index_sales_year ON sales(year); 创建索引后,再对该查询语句分析如下:Sql代码 EXPLAIN SELECT SUM(money) FROM sales s,company c WHERE s.company_id=c.id AND s.year=2006 /G; *************************** 1. row *************************** id: 1 select_type: SIMPLE table: s type: ref possible_keys: index_seles_year key: index_sales_year key_len: 2 ref: const rows: 1 Extra: Using where *************************** 2. row *************************** id: 1 select_type: SIMPLE table: c type: ref possible_keys: index_company_id key: index_company_id key_len: 5 ref: sakila.c.company_id rows: 1 Extra: Using where; Using index bitsCN.com

下载本文
显示全文
专题