Существует ли эффективный способ пролистать результаты запроса SOQL, не возвращая все результаты запроса и затем отбрасывая большинство их?
Как пример, я хотел бы смочь к пролистать полный список контактов, показывающих 10 записей за один раз. У меня нет потребности отсортировать по какому-то конкретному полю.
В настоящее время наиболее эффективным решением, которое я обнаружил, которое будет работать с любым запросом SOQL через партнерский API, является сохранение sObjects, возвращаемых из исходного QueryResult, и локатора запроса, если страница запрашивается за пределами текущие результаты.
Для этого требовался уровень поддержки разбиения по страницам поверх Salesforce QueryResult.
Т.е. При запросе страницы sObjects могут потребоваться от:
Если страница охватывает два (или более) QueryResult, необходимо создать искусственный QueryResult со всеми необходимыми записями.
Обновление для выпуска Spring 2012
Похоже, скоро появятся новые функции, которые добавят поддержку OFFSET в SOQL. Например.
SELECT Name FROM Merchandise__c WHERE Price__c > 5.0 ORDER BY Name LIMIT 50 OFFSET 100
См. Spring '12 Force.com Platform Release - OFFSET добавлен в SOQL (Pilot)
Обновление для летнего выпуска 2012 года
OFFSET теперь GA (общедоступно?)
Вы можете использовать поле auto-number filed для пагинации на стороне сервера. это поле может быть использовано после условия 'order by', оно может действовать как индексное поле.
Я сделал пагинацию, как у вас. но у меня есть другая проблема, я не могу сделать сортировку на стороне сервера в то же время. потому что сортировка и пагинация оба нуждаются в добавлении столбца после пункта 'order by'.