优化MySQL中的子子查询

时间:2015-06-02 00:26:06

标签: mysql optimization subquery

我有一个请求票务系统,允许对票证进行评论。我已经添加了一项功能,可以在用户登录最新评论时显示他们的任何一张票,如果他们上次访问后发生了任何变化,那就是一种线索。我可以通过一个小子选择来实现这一点,该子选择可以通过一个小型数据库运行良好但我怀疑它不会随着时间的推移而很好地扩展。

GROUP BY

我已经尝试过与HAVING和{{1}}混在一起,但还没找到我需要的地方。

此外,在同一时间戳内有多个评论的可能性是无穷小的。并且id键和外键是自动分配的,因此不能相信较高的id比较低的id更新。

如何优化查询以确保长期性能?

1 个答案:

答案 0 :(得分:2)

如果您只想要给定用户的最新评论,那么您可以将其表达为:

SELECT rc.*
FROM requests r JOIN
     requests_comments rc
     ON rc.request_id = r.id
WHERE r.username = 'someuser'
ORDER BY rc.commented_at DEC
LIMIT 1;

为了提高性能,您需要requests(username, id)request_comments(request_id)上的索引。