基本上,
我有一个功能贯穿用户的整个朋友列表,然后挑选每个朋友的最后状态帖子。现在,对于拥有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个输出。
非常感谢任何想法或建议。
答案 0 :(得分:0)
如果您只需要当前状态,则只需获取用户表的“status”字段即可。即
SELECT uid,status FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me())
但是,如果您严格要求用户的所有朋友的最新状态,则会有所不同。但它会快得多。
希望这会有所帮助