2011-09-17 6 views
0
기본적으로

, 나는 사용자의 전체 친구 목록을 통해 실행하는 기능을 가지고가 어떻게 FQL MuliQuery

를 통해 문 "를"일종의 실행할 수 있습니다, 각 친구의 최근 상태 게시물의를 선택하십시오. 이제 1500 명이 넘는 친구가 있거나 심지어 300 명이 넘는 직원이 있으면 신속하게 직원을 추가 할 수 있습니다. 나는. 을 통해 100 명의 친구를 데려가는 것은 대략 걸린다. 65 초.

그래서이 방법을 사용하면 MultiQuery를 통해 배치가 더 잘 실행됩니다. 여기에 기본 개념이다 :

$mq = array(
    "query1"=>"SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 5", 
    "query2"=>"SELECT actor_id, message, created_time, permalink FROM stream WHERE source_id IN (SELECT uid2 FROM #query1) AND actor_id IN (SELECT uid2 FROM #query1)" 
); 

그래서이 실제로 작동 위대한, 그러나 query2 출력의 모든 사용자의 뉴스 피드; 내가 "LIMIT 1"으로 설정하면 그 세트는 전체 query2이 사용자 당 1 출력 대신 1 출력으로 제한되도록합니다.

모든 아이디어 나 권장 사항에 크게 감사드립니다.

답변

0

현재 상태 만 필요한 경우 사용자 테이블의 "상태"필드를 가져올 수 있습니다. 당신이 엄격하여 사용자의 친구의 최신 상태를 필요로하는 경우 IN UID 즉
SELECT의 UID, 사용자의 상태 (UID1 나를 = WHERE 친구로부터 UID2 선택())

그러나이 조금 다르다. 그러나 훨씬 더 빠를 것입니다.

도움이 되겠습니다.