0

我正在运行这个查询:

{"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 个朋友的限制时,查询工作正常。

有谁知道问题是什么?

4

1 回答 1

0

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

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

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

于 2013-06-20T14:18:57.323 回答