【发布时间】:2013-02-16 13:25:31
【问题描述】:
所以,我需要从朋友那里获取最近的照片。我尝试从我的代码以及 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 个位置张贴了照片,因此之前的查询显然返回了不正确(不完整)的数据。
但与之前的查询相比,最后一种方法(循环遍历所有朋友)在性能方面很糟糕 - 我们说的是几分钟而不是几秒钟。
这是一个已知问题或限制吗?有什么解决方法吗?
【问题讨论】:
-
您为什么认为在 WHERE 子句中使用
owner不是一个好主意? -
汤米,我没想到。由于我在 WHERE 子句中与所有者对照片的查询永远不会返回,我想我应该尝试另一种方法。我并不是说我知道使用 owner 是个坏主意。
标签: facebook api facebook-fql photo