4

where句がlinq式のどこにあるかによってパフォーマンスに違いはありますか?

以下のコードを見てください。

dbContext.AnEntity.Include("AnotherEntity").Where(e => e.ID == id).ToList();

dbContext.AnEntity.Where(e => e.ID == id).Include("AnotherEntity").ToList();

これら 2 つの式の実行計画は同じですか、それとも異なりますか?

4

1 に答える 1

1

理論的には、いいえ。実際には、ケースバイケースで、プロバイダーごとにテストする必要があります。関連する (ただしわずかに異なる) 例として、L2S でかなり長い間、(同じセマンティックを持つ).Where(predicate).FirstOrDefault()と(特に ID マップのショートカットに関連する) は同じ動作をしませんでした。.FirstOrDefault(predicate)

特に(結果セットを展開する)は(述語.Include)とは少し別のカテゴリにあるため、同じになると思います.Whereが、検証する唯一の方法は、それをテストして、生成されたSQLとパフォーマンスを比較することです。

于 2012-08-06T08:53:45.617 に答える