5

すべてのクエリ結果を戻して大部分を破棄せずに、SOQL クエリの結果をページングする効率的な方法はありますか?

例として、一度に 10 件のレコードを表示する連絡先の完全なリストをページングできるようにしたいと考えています。特定のフィールドでソートする必要はありません。

4

2 に答える 2

8

現在、パートナー 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 が GA になりました (一般提供?)

于 2010-06-01T01:16:15.470 に答える
2

自動番号フィールドを使用して、サーバー側でページネーションを行うことができます。このフィールドは「order by」句の後に使用でき、インデックス フィールドとして機能します。

私はあなたの側のようにページネーションをしました。しかし、別の問題が発生しました。サーバー側で同時にソートを行うことはできません。並べ替えとページネーションの両方で、「order by」句の後に列を追加する必要があるためです。

于 2010-05-25T02:31:19.173 に答える