この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

OFFSET n

クエリ結果に大量のレコードが含まれると予想される場合、SOSL クエリに OFFSET 句を使用して結果を複数ページに表示できます。たとえば、OFFSET を使用して 51 ~ 75 番目のレコードを表示した後、スキップして 301 ~ 350 番目のレコードを表示できます。OFFSET を使用すると、大きな結果セットを効率よく処理できます。

クエリによって返される結果セットへの開始行オフセットを指定するには、OFFSET (省略可能) を使用します。オフセットの計算はサーバで実行されて結果サブセットのみが返されるため、完全な結果セットを取得して結果をローカルで絞り込むよりも OFFSET を使用した方が効率的です。OFFSET は、1 つのオブジェクトをクエリするときにのみ使用できます。OFFSET 句は、クエリの最後に指定する必要があります。OFFSET は、API バージョン 30.0 以降で使用できます。

1FIND {conditionExpression} RETURNING objectType(fieldList ORDER BY fieldOrderByList
2LIMIT number_of_rows_to_return
3OFFSET number_of_rows_to_skip)

例として、クエリが通常は 50 行を返す場合、クエリで OFFSET 10 を使用して最初の 10 行をスキップできます。

1FIND {test} RETURNING Account(id LIMIT 10 OFFSET 10)

前述の例の結果セットは、完全な結果セットの行 11 ~ 20 が返されたサブセットです。

OFFSET を使用するときの考慮事項

クエリで OFFSET を使用する場合、次の点を考慮してください。

  • 最大オフセットは 2,000 行です。2,000 より大きいオフセットを要求すると MALFORMED_SEARCH: SOSL offset should be between 0 to 2000 エラーが発生します。
  • 同じ結果セットの後続のサブセットを取得する必要がある場合は、LIMIT 句を OFFSET と組み合わせて使用することをお勧めします。たとえば、次を使用してクエリの最初の 100 行を取得できます。
    1FIND {test} RETURNING Account(Name, Id ORDER BY Name LIMIT 100)
    その後、以下のクエリを使用して次の 100 行 (101 ~ 200) を取得できます。
    1FIND {test} RETURNING Account(Name, Id ORDER BY Name LIMIT 100 OFFSET 100)
  • OFFSET を使用する場合、所定のクエリではレコードの最初のバッチのみが返されます。次のバッチを取得する場合、オフセット値を高くしたクエリを再実行する必要があります。
  • 同じ検索語での連続する SOSL 要求で異なる OFFSET を使用すると、前回の要求以降に検索対象データが更新されている場合、同じデータの異なるサブセットが返される保証はありません。
  • OFFSET 句は、SOAP APIREST API、および Apex で使用される SOSL で許可されます。