tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:SOQLの取得項目数と処理時間

SOQLの取得項目数によって処理時間がどのくらい違うのか検証してみました。

検証条件

  • 対象オブジェクト:Account
  • 取得項目数:1項目と複数項目(約40項目)で比較
  • 取得レコード数:1000件
  • 開発者コンソールで検証

1項目取得のケース

処理
f:id:tyoshikawa1106:20130907194309p:plain

結果
f:id:tyoshikawa1106:20130907194349p:plain

Execution OverviewのExecuted UnitsタブにあるQueryで実行時間を確認できると思います。Sum,Avg,Max,Minと全部同じ値でしたがたぶんこれが実行時間です。

1項目取得する処理の時間は「36.43」かかりました。

複数項目取得のケース

処理
f:id:tyoshikawa1106:20130907195053p:plain

結果
f:id:tyoshikawa1106:20130907195122p:plain

Queryの表示位置が上に来てましたがこちらも同様に確認できます。
複数項目取得する処理の時間は「95.19」かかりました。

まとめ

処理時間の実行結果にはバラつきがあるとは思いますが、1項目取得と複数項目の取得では処理時間に大きな差が発生するのが確認できました。

せっかくなので一度の処理で両方のクエリを実行するケースでも確認してみました。
f:id:tyoshikawa1106:20130907195627p:plain

「19.07」と「120.99」で取得したリスト数は同じでも実行時間は大きく違います。

タイムラインで確認するともっとわかりやすかったです。
f:id:tyoshikawa1106:20130907195838p:plain


ということでWHEREの条件が同じだからという理由だけで、一つのクエリにSELECTの対象を追加していくのはあまり良くないと思います。

ちなみに今回は差が出やすいように検証しましたが、4つ5つぐらいの違いならそんなには影響ありませんでした。
f:id:tyoshikawa1106:20130907201936p:plain

おまけ

今回実行時のクエリです。