繁体   English   中英

使用MySQL EXPLAIN优化查询

[英]Optimize Query with MySQL EXPLAIN

我有点数据库无聊,并有一个讨厌的查询,需要30秒钟才能运行。 我试图学习有关EXPLAIN的更多信息并优化查询,但无所适从。 这是查询:

SELECT 
    feed.*, users.username, smf_attachments.id_attach AS avatar, 
    games.name AS item_name, games.image, feed.item_id, u2.username AS follow_name
FROM feed
INNER JOIN following ON following.follow_id = feed.user_id AND following.user_id = 1
LEFT JOIN users ON users.id = feed.user_id
LEFT JOIN smf_members ON smf_members.member_name = users.username
LEFT JOIN smf_attachments ON smf_attachments.id_member = smf_members.id_member
LEFT JOIN games ON games.id = feed.item_id
LEFT JOIN users u2 ON u2.id = feed.item_id
ORDER BY feed.timestamp DESC
LIMIT 25

说明结果:

您将要在执行计划中避免的结果(explain语句的输出)是“ full scan”(解释输出的额外字段)。 为了避免这种情况,您需要在表上创建正确的索引。

如果进行表扫描,则意味着查询引擎按顺序读取表的每一行。 而是使用索引访问,查询引擎可以更直接地访问相关数据。

此处提供更多说明: http : //dev.mysql.com/doc/refman/5.0/en/using-explain.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM