だから、友達から最新の写真をもらう必要があります。コードとFQLエクスプローラー(http://developers.facebook.com/tools/explorer )からいくつかのクエリを実行してみました
次のクエリは返されません。
SELECT src_big、created、owner FROM photo WHERE owner in(select uid2 from friend where uid1 = me())order by created desc
FQLのドキュメントでは、所有者にインデックスが付けられていると記載されていますが、所有者にWHERE句を使用することはおそらくお勧めできません。だから、私はそれを次のように変更しました:
SELECT src_big、created、owner FROM photo WHERE aid in(select aid from album where owner in(select uid2 from friend where uid1 = me()))order by created desc limit 2000
それは返されますが、私の友人の3人からの写真しか返されません。また、写真の総数は2000に近くありません。
結果を過去7日間に作成された写真のみに制限してみました。
SELECT src_big、created、owner FROM photo WHERE aid in(select aid from album where owner in(select uid2 from friend where uid1 = me()))and created> 1361570941 order by created desc limit 2000
今、私は1枚の写真しか受け取りません(明らかに1人の所有者から)。
それから私は過去365日間を試しました。
SELECT src_big、created、owner FROM photo WHERE aid in(select aid from album where owner in(select uid2 from friend where uid1 = me()))and created> 1330639808 order by created desc limit 2000
今、私はより多くの写真を手に入れましたが、それでも2000年ではなく、またそれらの3人の所有者からのみです。
ここで、各友達をループしてこのクエリを実行すると、次のようになります。
SELECT src_big、created、owner FROM photo WHERE owner = and created> 1330639808 order by created desc limit 100
その後、適切な結果が得られます。最終的には、すべての友達との作業が終了すると、202人の友達の写真が表示されます。全体の結果を作成順に並べ替えると、前述の3人の所有者が一番上の行を支配しなくなります。上位2000のスポットに写真を投稿した所有者が多数いるため、以前のクエリは明らかに誤った(不完全な)データを返しています。
しかし、それを行う最後の方法(すべての友達をループする)は、前のクエリと比較してパフォーマンスがひどいです-数秒ではなく数分話しています。
これは既知の問題または制限ですか?回避策はありますか?