2011/06/22 19:03:12

ガバナ制限処方箋(2):List、Set、Mapの制限がなくなっている!?

このエントリーをはてなブックマークに追加

原稿を書き終わって気がついたのですが、Spring'11のバージョンアップ時にガバナ制限が緩和されており、
今回対象としようとしていたガバナ制限がなくなっていました_| ̄|○

かなり気がつくのが遅い。。。
よくあることなので、リリースがあるときは必ずガバナ制限をチェックするようにしましょう。

とはいえ、このまま原稿を捨ててしまうのは勿体無いので掲載します。今回対象にしようとしていたガバナ制限は
List、Set、Map配列の格納できる要素数の上限が1000まで、についてでした。

このガバナ制限(今はもうない)は無駄な大量レコードを取得する処理によって、プラットフォーム全体の
パフォーマンス劣化を防ぐためのものです。まとめて処理したい場合などでは煩わしい場合もありますが、
基本的にはプログラミングする場合に意識すべきことです。

これから2つの手法を紹介します。

WHERE句で不要なレコードを取得しないようにする

レコードを取得する際はできるだけWHERE句に検索条件を指定して、不要なレコードを取得しないようにします。
例えば、for文の中で処理する、しないの判定を行なっているのであれば、SOQLクエリで取得するときに
取得しないようにするほうがスマートなやり方です(当たり前すぎて申し訳ないくらいですが)。

応用として、あるオブジェクトのレコードを取得して一覧表示する場合などには、検索条件を必ず1つは指定させる
ことで取得するレコード件数を限定する手法があります。

Salesforceに既存システムを移行する場合などでは、テスト工程に入ってからガバナ制限によってエラーとなることが
判明し、大幅な画面変更となることがありますので、注意が必要です。レコードを一覧表示する画面では検索条件を
指定させる手法とともに、ページング処理なども含めて、画面設計をパターン化しておくことをお勧めします。

(次回へ続く)

「スタッフブログ」へのコメントやご意見等ありましたら、 Facebookページまでお願いします。
twitterでもつぶやいてますので、ご興味のある方はぜひフォローをお願いします。

(倉谷)

admin
Page topへ