小编xyl*_*lar的帖子

使用 Order 和 Group by 进行慢速 MySQL 查询

我有一个需要很长时间才能执行的查询(1.13 秒)。这两个表user_articles,并articles有大约25,000记录。这是查询:

SELECT `user_articles`.*
FROM `user_articles`
INNER JOIN `articles` ON (`user_articles`.`article_id` = `articles`.`id`)
GROUP BY `articles`.`id`
ORDER BY `user_articles`.`created_at` DESC
Run Code Online (Sandbox Code Playgroud)

我发现通过删除ORDER BY语句可以加快速度(0.003s)。这些是从结果EXPLAIN

+----+-------------+---------------+--------+---------------+------------+---------+-------------+-------+----------------------------------------------+
| id | select_type | table         | type   | possible_keys | key        | key_len | ref         | rows  | Extra                                        |
+----+-------------+---------------+--------+---------------+------------+---------+-------------+-------+----------------------------------------------+
| 1  | SIMPLE      | articles      | index  | PRIMARY       | PRIMARY    | 4       | NULL        | 22678 | Using index; Using temporary; Using filesort |
| 1 …
Run Code Online (Sandbox Code Playgroud)

mysql performance order-by group-by query-performance

3
推荐指数
1
解决办法
3644
查看次数