本文共 1049 字,大约阅读时间需要 3 分钟。
explain 可以帮助我们在不真正执行某个sql语句时,就执行mysql怎样执行,这样利用我们去分析sql指令.尽量避免全表扫描。
Id:SELECT识别符。这是SELECT的查询序列号SELECT * FROM emp WHERE empno = 3 and ename = (SELECT ename FROM emp WHERE empno = 4) \G;select_type:PRIMARY :子查询中最外层查询SUBQUERY : 子查询内层第一个SELECT,结果不依赖于外部查询DEPENDENT SUBQUERY:子查询内层第一个SELECT,依赖于外部查询UNION :UNION语句中第二个SELECT开始后面所有SELECT,SIMPLEUNION RESULT UNION 中合并结果Table:显示这一步所访问数据库中表名称Type:对表访问方式ALL,SELECT * FROM emp \G,完整的表扫描 通常不好SELECT * FROM (SELECT * FROM emp WHERE empno = 3) a ;System,表仅有一行(=系统表)。这是const联接类型的一个特Const,表最多有一个匹配行Possible_keys:该查询可以利用的索引,如果没有任何索引显示 nullKey :所选择使用索引Rows:执行查询时必须检查的行数EXPLAIN SELECT * FROM emp WHERE empno < 50 \G;EXPLAIN SELECT * FROM emp WHERE empno = 50 \G;Extra:查询细节信息No tables :没查表Using filesort 当Query中包含 ORDER BY 操作,而且无法利用索引完成排序, Impossible WHERE noticed after reading const tables: MYSQL Query Optimizer通过收集统计信息不可能存在结果Using temporary某些操作必须使用临时表,常见 GROUP BY ; ORDER BYUsing where不用读取表中所有信息,仅通过索引就可以获取所需数据;Key_len :被选中使用索引的索引长度
本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/8206660.html,如需转载请自行联系原作者