0

だから、友達から最新の写真をもらう必要があります。コードと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のスポットに写真を投稿した所有者が多数いるため、以前のクエリは明らかに誤った(不完全な)データを返しています。

しかし、それを行う最後の方法(すべての友達をループする)は、前のクエリと比較してパフォーマンスがひどいです-数秒ではなく数分話しています。

これは既知の問題または制限ですか?回避策はありますか?

4

1 に答える 1

0

私のFacebookの従業員の友人は、次のように複数のクエリを使用することを提案しました。

{"p1": "SELECT src_big、created、owner FROM photo WHERE owner = 4850 AND created> 1341203410"、 "p2": "SELECT src_big、created、owner FROM photo WHERE owner = 5569 AND created> 1341203410"}

まだ試していませんが、友達ごとにAPIを呼び出すよりもずっと速いと思います。

彼は、私の元のクエリからの誤った結果についてバグを報告すると述べました。

于 2013-03-06T06:39:26.860 に答える