mysql - 如何同时使用 ORDER BY 和 GROUP BY 子句的索引?

标签 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 使用不同的列会阻止使用索引。 那么是否有另一种技术可以用来加速这个查询。

最佳答案

由于您没有进行任何聚合,您可能可以省略分组依据,只按 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/

相关文章:

mysql - 如何将超过一百万条记录插入 MySQL 数据库?

MySQL - 拒绝运行集合名称?

没有任何匹配项的 MySql Join 表显示空值

c# - 如何将 DataGridView 中的 "True"更改为"is"?

php - 将 MySql/PHP 中的文本显示回其原始 HTML 布局有什么技巧?

java - MySQL:创建触发器总是给我语法错误

PHP While 从数组循环

mysql - 表 1 与表 2 外键引用的子项总和之间的 SQL 查询差异

mysql - 如何将 .wpress 文件转换为 .sql 文件并查看其内容?

php - SQL SELECT 和 PHP 检索速度 INT vs TINYINT vs VARCHAR vs ENUM?