페이스 북의 FQL과 각 친구의 프로필 정보를 사용하여 사용자의 뉴스 피드에서 처음 50 개의 게시물 (친구 별 게시물)을 얻으려고합니다. 내가 처리 10 초 총 두 개의 쿼리,이 :이 쿼리는 메시지가 "경우에도 사용자를 반환매우 복잡한 FQL 쿼리 매우 느림
SELECT actor_id, message FROM stream
WHERE filter_key IN
(SELECT filter_key FROM stream_filter WHERE uid= me() AND type='newsfeed')
AND actor_id in (SELECT uid2 FROM friend WHERE uid1 = me())
LIMIT 50
을로" "(내가 가진 행을 필터링하기 위해 NOT 연산자를 찾을 수 없습니다" 메시지)
두 번째 쿼리 :
SELECT pic_big, name,url from profile WHERE id IN
(SELECT actor_id, message FROM stream WHERE filter_key IN
(SELECT filter_key FROM stream_filter WHERE uid= me()
AND type='newsfeed')
AND actor_id in (SELECT uid2 FROM friend WHERE uid1 = me()))
LIMIT 50
나는 데이터를 (더 빨리)를하지만, 페이스 북은 데이터가 나오는 것은 아닙니다 (무작위 순서로 돌려받을 수있는 다른 방법을 시도했습니다 그것이 들어간 길).
내 웹 사이트에 '로딩'애니메이션을 넣을 수는 있지만 최적화 할 수 있다고 생각하기 때문에 좋아하지는 않을 것입니다.하지만 어떻게해야할지 모르겠습니다.
과거에는 그래프 API를 사용했지만 결과를 직접 처리해야했으며 30 초 이상 걸리는 매우 비효율적이었습니다.
달콤한. 도와 주셔서 감사합니다! – alexy13
몇 차례 작동 한 것처럼 보인 후 두 쿼리가 일치하지 않는 결과를 보였습니다 (하나의 쿼리는 21 개 결과가 45 개 였을 것이고 다른 하나는 동일 할 것입니다). 사용자의 게시물이 프로필 정보와 일치하지 않습니다 :(. 두 배열을 ID별로 정렬 할 수 있지만 만든 날짜별로 정렬하지 않습니다.이 문제를 해결하는 쉬운 방법이 있습니까? – alexy13
예. 가장 쉬운 방법은 다음과 같습니다. 두 개의 중첩 된 FOREACH 루프와 함께 q2 쿼리를 수정하여 id를 반환하고 Q1 결과를 반복 한 다음 q1의 각 행에 대해 q2의 루프를 반복하여 q1의 actor_id와 일치하는 id를 찾습니다. 각 사용자의 게시물이 두 개 이상있을 수 있으므로 일치하지 않을 수도 있습니다. – cpilko