すべてのクエリ結果を戻して大部分を破棄せずに、SOQL クエリの結果をページングする効率的な方法はありますか?
例として、一度に 10 件のレコードを表示する連絡先の完全なリストをページングできるようにしたいと考えています。特定のフィールドでソートする必要はありません。
すべてのクエリ結果を戻して大部分を破棄せずに、SOQL クエリの結果をページングする効率的な方法はありますか?
例として、一度に 10 件のレコードを表示する連絡先の完全なリストをページングできるようにしたいと考えています。特定のフィールドでソートする必要はありません。
現在、パートナー API を介して任意の SOQL クエリで動作する最も効率的な解決策は、現在の結果以外のページが要求された場合に備えて、最初の QueryResult とクエリ ロケータから返された sObject を保持することです。
これには、Salesforce QueryResult の上にあるレベルのページング サポートが必要でした。
つまり、ページがリクエストされたときに、次の sObject が必要になる場合があります。
ページが 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 が GA になりました (一般提供?)
自動番号フィールドを使用して、サーバー側でページネーションを行うことができます。このフィールドは「order by」句の後に使用でき、インデックス フィールドとして機能します。
私はあなたの側のようにページネーションをしました。しかし、別の問題が発生しました。サーバー側で同時にソートを行うことはできません。並べ替えとページネーションの両方で、「order by」句の後に列を追加する必要があるためです。