MySQL 查询优化器的使用

ZDNet软件频道 时间:2001-05-23 作者:Susan Sales Harkins、Martin W. P. Reid |  我要评论()
本文关键词:
查询引擎总是不能正确理解你的查询意图吗?害怕的错误的时机提出错误的问题吗? Susan S. Harkins 告诉我们怎样用 MySQL 的查询优化器提高你的交流技能。
MySQL 查询优化器的使用
包含 EXPLAIN

我们将以在SELECT语句中包含EXPLAIN关键字为题专门写一本书,因为这个关键字能够返回 一个查询的大量信息。如果指定的索引并没有提高查询的性能,把 EXPLAIN 关键字插入查询中并重新运行。这个关键字将返回SELECT语句中用到的每一个表的数行信息。表B 列出了结果行信息的每一列并解释了其内容。

表B:列及其内容。

描述
table 信息所代表的表
type 查询使用的结合类型
possible_keys 标识 MySQL可用索引
key_len 表示使用键的长度
ref 列出用来选取行的列或者常量
rows MySQL期望检查的行号
extra 附加信息 (参见下面表C)


表C:更多信息
附加文本字符串 描述
distinct MySQL 因找到匹配项而停止查找
not exists MySQL 用 LEFT JOIN 对查询进行了优化,找到匹配 LEFT JOIN 项后将停止查找。
 
range checked for each record MySQL找不到合适的索引。将使用对每个行组合 比较好的索引
using filesort MySQL对符合 WHERE 准则的行进行标记然后 对标记行依键值排序。(需要附加的pass) 避免在同一查询中同时使用filesort和 temporary
using index 在所有列都是索引的一部分时使用,避免再对 每行定位读取
using temporary MySQL创建临时表存储查询结果;当ORDER BY基 于一列而不是GROUP BY列时使用
where 使用WHERE语句限制匹配行数

运行EXPLAIN后,就可以开始分析并相应修改查询了。

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134