C# 实体框架SQL Server Compact嵌套选择查询性能差
所以,在问题的后面,我正在研究为什么SQL Server Compact的查询性能很差,从而阻塞了UI线程。我已禁用LazyLoading,并提前显式加载所需的数据 为了稍微隔离这一点,我在Northwind数据库上运行了一个测试,使用以下查询加载所有订单,并为每个订单加载关联的OrderDetails,为每个OrderDetail加载产品和供应商: 执行大约需要9秒 作为比较,我在本地SQLServerExpress上运行了Northwind数据库,并在<0.1秒内完成C# 实体框架SQL Server Compact嵌套选择查询性能差,c#,entity-framework,sql-server-ce,C#,Entity Framework,Sql Server Ce,所以,在问题的后面,我正在研究为什么SQL Server Compact的查询性能很差,从而阻塞了UI线程。我已禁用LazyLoading,并提前显式加载所需的数据 为了稍微隔离这一点,我在Northwind数据库上运行了一个测试,使用以下查询加载所有订单,并为每个订单加载关联的OrderDetails,为每个OrderDetail加载产品和供应商: 执行大约需要9秒 作为比较,我在本地SQLServerExpress上运行了Northwind数据库,并在
导致此查询中出现问题的.Select()有什么问题?为什么此选择导致SQL Server Compact的执行时间如此长,但在SQL Server上运行时没有问题?您是否查看了生成的SQL(使用DbContext..Log)并使用SQL Server Compact Toolbox对其进行了分析?@ErikEJ两个数据库中的SQL看起来相同(尽管数据库之间的字段名不同),但主体结构是相同的。执行计划是不同的,但我希望它们会有所不同,因为SQL Server提供了额外的功能。没有什么不寻常的…您是否检查了基础表以比较记录、索引以及表上是否有触发器?任何这些事情都可能影响查询性能。还有一件事。。。如果手动运行生成的SQL,您会看到与通过EF得到的结果相同的结果吗?谢谢@DeadZone的评论。这个特定的查询/数据库只是一个例子(数据库是公开的)。我在所有SQL compact数据库中都遇到了这个问题,在这些数据库中,我使用.Include(..Select(…)类型模式加载子实体
entities.Orders.Include(o => o.Order_Details
.Select(od => od.Products.Suppliers))
.Load();