Разбиение на страницы SOQL для Salesforce запросы API

Существует ли эффективный способ пролистать результаты запроса SOQL, не возвращая все результаты запроса и затем отбрасывая большинство их?

Как пример, я хотел бы смочь к пролистать полный список контактов, показывающих 10 записей за один раз. У меня нет потребности отсортировать по какому-то конкретному полю.

5
задан Daniel Ballinger 2 October 2009 в 01:42
поделиться

2 ответа

В настоящее время наиболее эффективным решением, которое я обнаружил, которое будет работать с любым запросом SOQL через партнерский API, является сохранение sObjects, возвращаемых из исходного QueryResult, и локатора запроса, если страница запрашивается за пределами текущие результаты.

Для этого требовался уровень поддержки разбиения по страницам поверх Salesforce QueryResult.

Т.е. При запросе страницы sObjects могут потребоваться от:

  • Текущий (кэшированный) QueryResult
  • Последующий QueryResult, который может быть получен с помощью локатора запроса
  • Предыдущий QueryResult
  • Некоторая комбинация всех трех.

Если страница охватывает два (или более) 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 (общедоступно?)

8
ответ дан 13 December 2019 в 22:11
поделиться

Вы можете использовать поле auto-number filed для пагинации на стороне сервера. это поле может быть использовано после условия 'order by', оно может действовать как индексное поле.

Я сделал пагинацию, как у вас. но у меня есть другая проблема, я не могу сделать сортировку на стороне сервера в то же время. потому что сортировка и пагинация оба нуждаются в добавлении столбца после пункта 'order by'.

2
ответ дан 13 December 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: