我有以下 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
使用不同的列会阻止使用索引。
那么是否有另一种技术可以用来加速这个查询。
最佳答案
由于您没有进行任何聚合,您可能可以省略分组依据,只按 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
关于mysql - 如何同时使用 ORDER BY 和 GROUP BY 子句的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599242/