如何将这两个索引用于ORDER BY和GROUP BY子句?

时间:2016-04-13 13:01:50

标签: mysql

我有以下MySQL表articlecategory以及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 BYORDER BY使用不同的列可防止使用索引。 那么我可以使用另一种技术来加速这个查询。

1 个答案:

答案 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