当我比较我自己构建的查询和实体框架构建的查询时,我遇到了一个有趣的问题,这是我在存储过程中所做的查询:
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 编译器在哪里足够聪明以同样的方式优化查询?(假设在加入/位置条件下正确定义了索引。