SOQLの取得項目数によって処理時間がどのくらい違うのか検証してみました。
検証条件
- 対象オブジェクト:Account
- 取得項目数:1項目と複数項目(約40項目)で比較
- 取得レコード数:1000件
- 開発者コンソールで検証
1項目取得のケース
処理
結果
Execution OverviewのExecuted UnitsタブにあるQueryで実行時間を確認できると思います。Sum,Avg,Max,Minと全部同じ値でしたがたぶんこれが実行時間です。
1項目取得する処理の時間は「36.43」かかりました。
複数項目取得のケース
処理
結果
Queryの表示位置が上に来てましたがこちらも同様に確認できます。
複数項目取得する処理の時間は「95.19」かかりました。
まとめ
処理時間の実行結果にはバラつきがあるとは思いますが、1項目取得と複数項目の取得では処理時間に大きな差が発生するのが確認できました。
せっかくなので一度の処理で両方のクエリを実行するケースでも確認してみました。
「19.07」と「120.99」で取得したリスト数は同じでも実行時間は大きく違います。
タイムラインで確認するともっとわかりやすかったです。
ということでWHEREの条件が同じだからという理由だけで、一つのクエリにSELECTの対象を追加していくのはあまり良くないと思います。
ちなみに今回は差が出やすいように検証しましたが、4つ5つぐらいの違いならそんなには影響ありませんでした。
おまけ
今回実行時のクエリです。