我有以下3个表:MySQL的优化:LEFT JOIN
出版物(主键= 文章)
article | title | pubType
作者(主键= * AUTHOR_NAME *)
author_name | author_somethingelse
pub_author_map
article | author_name
给定值pubType
,我需要选择有关的文章,包括作者的信息。要做到这一点,我有
SELECT p.article, p.title, p.dateTime, pam.author_name FROM publications p
LEFT JOIN pub_author_map pam ON pam.article = p.article
LEFT JOIN authors a ON a.author_name = pam.author_name
WHERE p.pubType = '$pubType' ORDER BY p.article LIMIT 10
即使有LIMIT 10
,这个查询在约29秒入。 publications
中有1500行,pub_author_map
中有3000行。
如何优化上述查询?
请注意,LIMIT不会限制sql数据集,而是限制输出。因此,它不应该用于生产。 – 2012-08-08 16:52:26
@SebastianHojas你是说LIMIT不应该用于生产? ? – 2012-08-08 16:54:50
关于你的注意事项:首先想出一个提供正确结果的查询,然后重写它比其他方式快速工作要好得多。没有理由让作者脱离示例。我们大多数人可以处理三种方式的联接。 – 2012-08-08 16:55:39