我的数据库中有 2 个表,User
和 Post
。第一个表存储用户的个人数据,第二个表存储用户的帖子。
我想构建 1 个查询来为每个用户获取最新的 N 个帖子,我能够通过循环遍历每个用户并获取最新的帖子并将它们存储在数组中以备后用,但是性能太差了不好,我无法转发它,因为用户和帖子太多(超过 20000 名用户)。
所以我需要一些动态查询来获取这些帖子,当然我会为它添加一些分页。
提前致谢。
最佳答案
您需要阅读 JOIN 以针对多个表编写单个查询。
例如:select post from posts join users on posts.poster_id = users.user_id
为了获得良好的性能,请确保您的索引设置正确,通常是在 poster_id 上,但它也取决于您在 where 子句中使用的列。
您可以在其末尾添加 where 子句以仅返回特定时间或用户的帖子。分页更棘手,取决于您使用的数据库。
我使用的分页(在 SqlServer 2008r2 中,使用 Sql2012 可以不同地完成):
SELECT <columns>
FROM (SELECT ROW_NUMBER() OVER (ORDER BY Time DESC) as RowNum, * from <query>) as RowConstrainedResult
WHERE RowNum >= X AND RowNum < Y
ORDER BY RowNum
用相关行号(例如 101 和 200)替换列、查询以及 X 和 Y 的位置
关于php - 获取每个用户的最新 N 个帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23110673/