FQL如何选择用户所有照片的标签是按照专辑过滤的?

时间:2013-06-13 15:40:58

标签: facebook-graph-api facebook-fql fql.multiquery

我正在使用以下代码选择我在

中标记的所有照片
select pid from photo_tag where subject = me()

但现在我只想选择某张专辑中的照片,我有两种方法可以做到这一点。

select pid from photo where aid = $aid1 and pid in ( select pid from photo_tag where subject = me() )

select pid from photo_tag where subject = me() and pid in ( select pid from photo where aid = $aid1 )

据我所知,他们都做同样的事情并且工作正常。

问题是它与第二张,第三张等专辑的效果不佳。

如果我执行以下操作

select pid from photo_tag where subject = me() and pid in ( select pid from photo where aid = $aid1 or aid = $aid2)

它只会选择其中一张相册中的照片而不是两张相同的照片,如果我更换或使用它,它会选择第一张专辑中标记的照片和第二张专辑中的所有照片。

所以查询最终会变成像

这样的东西
 SELECT pid from photo where ( pid in (select pid from photo where aid = $aid1 and pid in (select pid from photo_tag where subject = me() ) ) or pid in (select pid from photo where aid = $aid2 and pid in (select pid from photo_tag where subject = me() ) ) )

当我进行查询以获取我标记的所有照片时,它需要大约900毫秒,据我所知,返回几百张照片。我试图将此限制为大约6张或7张相册,大约150张照片,但我认为查询不够高效,因为我在15分钟前开始运行查询并且仍在加载,所以我不认为它永远都会回归任何东西。

如果我单独查询每张专辑,而不是将所有专辑放在一起,会更快吗?

还有什么可能更好。

我感谢你们的任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

开始查看多个查询并批量处理,这样可以提高您的效果。

因此,您的上一个查询将是以专辑分隔的批处理数组,每次调用都是photophoto_tag表之间的多查询。

https://developers.facebook.com/docs/reference/api/batch/