所以我之前发布了一个关于左边连接查询结果的问题,其中group by用于另一个表,并且它导致嵌套在Cross Apply sql中的效率极低的Outer Apply。我没有从回复中得到任何有用的东西(虽然我很感激努力),所以我决定做更多的研究。
on Cross Apply&外申请:
交叉申请和外部申请运营商
这些运营商不在 SQL Server 2000. LINQ to SQL尝试了 重写系列以取代它们 有适当的连接。
交叉申请和外部申请 为关系而生成 导航。查询集 哪种重写是可能的 没有明确定义。出于这个原因, 最小的查询集 支持SQL Server 2000是 设置不涉及关系 导航
我不会问为什么他们虽然这是一个好主意,但我想知道是否有办法强制linq到sql进入2000模式。这似乎解决了我的问题。
答案 0 :(得分:1)
我在这里有一个简单的方法...如果你发现自己不得不锤击LINQ查询以使其发挥得很好,那么:不要玩那个游戏。
由于您可以使用ExecuteQuery<T>
,我只需要以可以测量,预测和优化的方式直接编写TSQL,并使用LINQ-to-SQL(或dapper.net)将结果提升为基本对象。