Salesforce API クエリの SOQL ページネーション
-
19-09-2019 - |
質問
すべてのクエリ結果を戻してその大部分を破棄せずに、SOQL クエリの結果をページングする効率的な方法はありますか?
例として、連絡先の完全なリストをページ移動して、一度に 10 件のレコードを表示できるようにしたいと考えています。特定のフィールドで並べ替える必要はありません。
解決
現在のところ、パートナー API を介して SOQL クエリで動作する最も効率的なソリューションは、現在の結果以外でページがリクエストされた場合に備えて、最初の QueryResult から返される sObject とクエリロケータを永続化することです。
これには、Salesforce QueryResult に加えて、あるレベルのページング サポートが必要でした。
つまり、ページがリクエストされると、以下から sObject が必要になる場合があります。
- 現在の (キャッシュされた) QueryResult
- クエリ ロケーターを使用してフェッチできる後続の QueryResult
- 以前のQueryResult
- 3 つすべてを組み合わせたもの。
ページが 2 つ (またはそれ以上) の QueryResult にまたがる場合は、必要なすべてのレコードを含む人工的な QueryResult を作成する必要があります。
2012 年春リリースのアップデート
SOQL に OFFSET サポートを追加する新しい機能が登場するようです。例えば。
SELECT Name FROM Merchandise__c WHERE Price__c > 5.0 ORDER BY Name LIMIT 50 OFFSET 100
見る Spring '12 Force.com プラットフォーム リリース - SOQL に OFFSET を追加 (パイロット)
2012 年夏リリースのアップデート
OFFSET は一般提供になりました (一般提供?)
他のヒント
あなたは、サーバー側でページネーションを行うために提出された自動番号を使用することができます。このフィールドは句「で順序」の後に使用することができ、それがインデックスフィールドとして機能することができます。
私は何サイドのようなページネーションをやりました。しかし、私は別の問題を抱えて、私は同時に、サーバ側でのソートを行うことはできません。ソートやページネーションので、両方の句「で順序」の後に列を追加する必要があります。