自分で作成したクエリとエンティティ フレームワークで作成したクエリを比較すると、興味深い質問に遭遇しました。ストアド プロシージャで作成したクエリは次のとおりです。
select *
from TableA a
join (select b.Col2, c.Col3
from TableB b
join TableC c on b.Col1=c.Col1
where b.Col2 in (1,2,3,4)
) as bc on a.Col3=bc.Col3
エンティティ フレームワークによって作成されたクエリは次のとおりです。
select *
from TableA a
join (select b.Col2, c.Col3
from TableB b
join TableC c on b.Col1=c.Col1
) as bc on a.Col3=bc.Col3 and bc.Col2 in (1,2,3,4)
私の質問は、SQLコンパイラが同じ方法でクエリを最適化するのに十分賢い場所ですか? (join/where 条件でインデックスが適切に定義されていると仮定します。