2011-09-17 3 views
0
基本的に

、私は、ユーザーの全体の友達リストを通る機能を持っているはどのように私はFQL MuliQuery

を通じて声明「の」ソートの実行することができ、その後、各友人の最後のステータスのポストをのを拾います。今、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

現在のステータスだけが必要な場合は、ユーザーテーブルの「ステータス」フィールドを取得できます。すなわち
SELECT uidを、あなたは厳密にユーザーのすべてのお友達の最新の状態を必要とする場合(UID1は(私を=友人からUID2 SELECT))

、IN uidはしかし、これは少し異なっているユーザーからのステータス。しかし、はるかに速くなります。

が、これは

を役に立てば幸い