0

基本上,

我有一个功能可以遍历用户的整个朋友列表,然后获取每个朋友的最后状态帖子。现在,对于拥有 1500 多个朋友甚至 300 多个朋友的人来说,执行时间很快就会增加。即运行 100 个朋友大约需要。65 秒。

所以我想,这将通过 MultiQuery 作为批处理运行得更好。这是基本概念:

$mq = array(
    "query1"=>"SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 5",
    "query2"=>"SELECT actor_id, message, created_time, permalink FROM stream WHERE source_id IN (SELECT uid2 FROM #query1) AND actor_id IN (SELECT uid2 FROM #query1)"
);

所以这实际上效果很好,但是query2输出的是所有用户的新闻提要;如果我将其设置为,"LIMIT 1"那么该设置将整个query2限制为 1 个输出,而不是每个用户 1 个输出。

非常感谢任何想法或建议。

4

1 回答 1

0

如果您只需要当前状态,您可以获取用户表的“状态”字段。即
SELECT uid, status FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me())

但是,如果您严格需要用户所有朋友的最新状态,这有点不同。但它会快得多。

希望这可以帮助

于 2011-09-17T07:39:51.297 回答