Salesforce API 쿼리를위한 SOQL Pagination
-
19-09-2019 - |
문제
모든 쿼리 결과를 다시 가져온 다음 대부분의 쿼리 결과를 버리지 않고 SOQL 쿼리의 결과를 통해 페이지를 페이지에 효율적으로하는 방법이 있습니까?
예를 들어, 한 번에 10 개의 레코드를 보여주는 연락처의 전체 목록을 통해 페이지를 페이지에 넣을 수 있기를 원합니다. 특정 필드를 분류 할 필요가 없습니다.
해결책
현재 파트너 API를 통해 SOQL 쿼리와 함께 작동하는 가장 효율적인 솔루션은 초기 쿼리로부터 반환 된 SOBJEcts를 지속적으로 유지하는 것입니다.
이를 위해서는 Salesforce QueryResult 위에 페이징 지원 수준이 필요했습니다.
즉, 페이지가 요청되면 sobjects가 필요할 수 있습니다.
- 현재 (캐시 된) QueryResult
- 쿼리 로케이터를 사용하여 가져올 수있는 후속 쿼리 리그
- 사전 쿼리
- 세 가지 모두의 조합.
페이지가 두 개 (또는 그 이상) QueryResults에 걸쳐있는 경우 모든 필요한 레코드와 함께 인공 쿼리 리트를 만들어야합니다.
봄 2012 릴리스 업데이트
SOQL에 오프셋 지원을 추가 할 새로운 기능이 나오는 것 같습니다. 예를 들어
SELECT Name FROM Merchandise__c WHERE Price__c > 5.0 ORDER BY Name LIMIT 50 OFFSET 100
보다 Spring '12 Force.com 플랫폼 릴리스 -SOQL에 추가 된 오프셋 (파일럿)
2012 년 여름 릴리스 업데이트
오프셋은 이제 GA입니다 (일반 가용성?)
다른 팁
서버 측에서 페이지 매김을하기 위해 자동 너버를 사용하여 출원을 할 수 있습니다. 이 필드는 'Order by'clause 후에 사용할 수 있으며 색인 필드 역할을 할 수 있습니다.
나는 당신의 편과 같은 페이지 매김을했습니다. 그러나 나는 또 다른 문제가 생겼습니다. 동시에 서버 쪽에서 정렬 할 수 없습니다. 정렬과 페이지 매김은 '주문에 의해'후에 열을 추가해야하기 때문입니다.