2009-10-02 7 views
5

모든 쿼리 결과를 다시 가져 오지 않고 대부분을 삭제하지 않고도 SOQL 쿼리의 결과를 페이징 할 수있는 효율적인 방법이 있습니까?Salesforce API 쿼리에 대한 SOQL 페이지 번호

예를 들어, 한 번에 10 개의 레코드를 보여주는 전체 연락처 목록을 통해 페이지를보고 싶습니다. 특정 분야별로 분류 할 필요가 없습니다.

+0

와 함께 id 필드를 사용하여 논의가 결과를 페이지 단위로 정렬하여 SOQL 기능을 제한하십시오. http://ideas.salesforce.com/article/show/10089030/SOQL_Request_allow_greaterthan_lessthan_WHERE_conditions_for_Id_fields –

+0

을 참조하십시오. 이것은 아마도 내 업적에 나쁜 카르마를 가져다 줄 것입니다. 그러나 일반적인 SOQL 쿼리를 기반으로 페이지 매김을 수행하는 방법을 찾아 냈습니다. 코드를 공유 하겠지만 상용 제품의 일부입니다. 내가 관심있는 사람이 있다면 링크를 공유 할 수 있습니다. http://www.fishofprey.com/2009/10/soql-pagination-for-salesforce-api.html. –

답변

7

현재 파트너 API를 통한 모든 SOQL 쿼리에서 작동하는 가장 효율적인 솔루션은 초기 QueryResult에서 반환 된 sObject를 유지하고 현재 로터 외부에서 페이지를 요청한 쿼리 로케이터입니다.

이렇게하면 Salesforce QueryResult 위에 페이징 지원 수준이 필요합니다.

e.e.

  • 현재 (캐시) 쿼리 로케이터
  • 에게 이전 QueryResult
  • 모두의 조합을 사용하여 인출 할 수 있습니다
  • 후속 QueryResult을 QueryResult : 페이지가 요청하면 sObjects가에서 요구 될 수있다 세.

페이지가 두 개 (또는 그 이상)의 QueryResults에 걸쳐 있으면 인공적 QueryResult가 필요한 모든 레코드로 작성되어야합니다. SOQL에 OFFSET 지원을 추가 할 것이다오고 새로운 기능이 같은 봄 2012

업데이트 릴리스

보인다. 예 :

SELECT Name FROM Merchandise__c WHERE Price__c > 5.0 ORDER BY Name LIMIT 50 OFFSET 100 

여름 2012 릴리스

OFFSET is now GA에 대한 Spring '12 Force.com Platform Release - OFFSET added to SOQL (Pilot)

업데이트를 참조하십시오 (일반 가용성?) 세일즈 포스 아이디어 사이트에

2

서버 측에서 페이지 번호 매김을 위해 자동 번호를 사용할 수 있습니다. 이 필드는 'order by'절 다음에 사용할 수 있으며 인덱스 필드로 사용할 수 있습니다.

나는 당신 편이던 것처럼 페이지 매김을했습니다. 하지만 또 다른 문제가 있는데, 나는 서버 측에서 동시에 정렬을 할 수 없다. 왜냐하면 정렬과 페이지 매김은 모두 'order by'절 다음에 열을 추가해야하기 때문입니다.