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出力はすべてのユーザーのニュースフィードです。これに設定すると、ユーザーごとに1つの出力ではなく、1つの出力に制限されるよう"LIMIT 1"に全体が設定されます。query2

任意のアイデアや推奨事項は大歓迎です。

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 に答える