技术开发 频道

MySQL优化总结

  · possible_keys

  possible_keys列指出MySQL能使用哪个索引在该表中找到行。注意,该列完全独立于EXPLAIN输出所示的表的次序。这意味着在possible_keys中的某些键实际上不能按生成的表次序使用。

  如果该列是NULL,则没有相关的索引。在这种情况下,可以通过检查WHERE子句看是否它引用某些列或适合索引的列来提高你的查询性能。如果是这样,创造一个适当的索引并且再次用EXPLAIN检查查询。

  为了看清一张表有什么索引,使用SHOW INDEX FROM tbl_name。

  · key

  key列显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

  对于MyISAM和BDB表,运行ANALYZE TABLE可以帮助优化器选择更好的索引。对于MyISAM表,可以使用myisamchk --analyze。

  · key_len

  key_len列显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。注意通过key_len值我们可以确定MySQL将实际使用一个多部关键字的几个部分。

  · ref

  ref列显示使用哪个列或常数与key一起从表中选择行。

  · rows

  rows列显示MySQL认为它执行查询时必须检查的行数。

  · Extra

  该列包含MySQL解决查询的详细信息。下面解释了该列可以显示的不同的文本字符串:

   ⊙Distinct

  MySQL发现第1个匹配行后,停止为当前的行组合搜索更多的行。

  ⊙Not exists

  MySQL能够对查询进行LEFT JOIN优化,发现1个匹配LEFT JOIN标准的行后,不再为前面的的行组合在该表内检查更多的行。

1
相关文章