【Salesforce】SOQLで50,000件を超えるレコードを取得する

【Salesforce】SOQLで50,000件を超えるレコードを取得する

Salesforceで大量のレコードを扱う処理がある場合に、50,000件を超えるレコードを取得するとエラーが発生します。

https://developer.salesforce.com/docs/atlas.ja-jp.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_apexgov.htm

SOQLで集計を行っても、対象のレコードが上限を超えるとエラーが発生します。

Visualforce側と合わせて処理を分割することで解決することもありますが、それもできない場合があります。

そのようなときは、メソッドにReadOnlyアノテーションを付与したり、VisualforceのpageタグにReadOnlyを設定することで取得するレコード数が増えるようです。

https://developer.salesforce.com/docs/atlas.ja-jp.206.0.pages.meta/pages/pages_controller_readonly_context.htm

レコードの取得件数が増えますが、DMLが使用できなくなります。

しかし、レコードを保存せずに集計して表示を行うだけの場合は有効ですね。

帳票なんかでも活用することが出来そうです。

ちなみに、レコードの取得件数だけでなく、VisualforceのrepeatやDataTableで表示可能な件数も増えるそうです。

1000件を超えるレコードでrepeatするとエラーが出ますから、こちらも嬉しい機能ですね。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です