我有以下MySQL表article
和category
以及category_article
。每篇文章可能属于多个类别,这是我的SQL
查询。
SELECT * FROM article a
LEFT JOIN category_article ca ON a.id=ca.aid
LEFT JOIN category c ON c.id=ca.cid
GROUP BY a.id
ORDER BY a.date DESC
WHERE c.status='1'
LIMIT 0,10
为GROUP BY
和ORDER BY
使用不同的列可防止使用索引。
那么我可以使用另一种技术来加速这个查询。
答案 0 :(得分:0)
由于您没有进行任何聚合,您可能会遗漏该组,只需按a.ID,a.date排序结果并获得相同的结果。这应该会导致更快的查询执行计划。
SELECT * FROM article a
Left JOIN category_article ca ON a.id=ca.aid
Left JOIN category c ON c.id=ca.cid
ORDER BY a.id, a.date DESC