0

所以,我需要从朋友那里获取最新的照片。我尝试从我的代码以及来自http://developers.facebook.com/tools/explorer的 FQL 资源管理器运行一些查询

以下查询永远不会返回。

SELECT src_big, created, owner FROM photo WHERE owner in (select uid2 from friend where uid1=me()) order by created desc

对所有者使用 WHERE 子句可能不是一个好主意,即使 FQL 文档确实说所有者已被索引。因此,我将其修改为:

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 回答