使用大型fql查询的内部服务器错误

时间:2012-06-09 02:07:47

标签: facebook-fql

我正在运行此查询:

{"my_friends":"SELECT uid2 FROM friend WHERE uid1=me()",
 "check_ins":"SELECT coords, tagged_uids, author_uid, page_id, message, timestamp
              FROM checkin WHERE author_uid=me() OR author_uid
              IN (SELECT uid2 FROM %23my_friends)",
 "tagged_check_in_users":"SELECT uid from user
                          where ((uid in (select tagged_uids from %23check_ins))
                          OR (uid in (select author_uid from %23check_ins)))
                          AND uid <> me()"}

当当前用户有很多朋友(超过200,或多或少)时,我得到“内部服务器错误”。当我更改“my_friends”表查询并添加100个朋友的限制时,查询工作正常。

有谁知道问题是什么?

1 个答案:

答案 0 :(得分:0)

我认为这可能是由IN子句的某些限制引起的。某些SQL数据库也有此限制,例如Oracle SQL在IN子句中最多支持1000个元素。我没有发现FQL文档中提到的任何此类限制,但这并不意味着没有。

另外,我想一个朋友可以有多个签到,所以即使第一个IN子句工作正常,第二个和第三个可能是问题。因此,在人们进行大量签到的某些情况下,即使有限制,您也会收到错误。

尝试限制签到并告诉我它是否有效。但是,如果您需要保证查看所有签到,这不是最佳解决方案。在这种情况下,我猜你将不得不创建两个查询,首先要求签入,然后在第二个查询中检索有关自己的限制的信息。