参考書によるとWhereを先にSelectを後にとある。
逆にすると発行されるSQLが副問い合わせ形式になって効率が悪いのだとか。
ただ、実際に両方書いてみて発行されるSQLを見たのだがどちらも変わらない・・・。
バージョンが上がって最適化されるようになったのかとも思い3.5でも試してみたがやはり同じ。
ログの見方が悪いのか・・・。
まぁ、拡張メソッド方式では単純に順番を逆にすれば良いのだが、埋め込みクエリー方式ではそれこそ副問い合わせ風に書かないといけないっぽいので、とりあえずWhereが先としておけば問題はないかとも思う。
大まかに言うと以下の順番で書いていくのが基本らしい。
- 抽出処理(Where)
- ソート処理(OrderBy)
- グループ化処理(GroupBy)
- 読み飛ばし処理(SkipまたはTake)
- 射影処理(Select)
Linq To Sqlでない場合に Where の方が先にしておくと Select の回数が減るので良いのではないでしょうか。
返信削除