EF Core 11 让 AsSplitQuery 更快

EF Core 11 makes your split queries faster

EF Core 11 让 AsSplitQuery 更快

如果你在使用 AsSplitQuery,EF Core 11 给你送了一份大礼:查询速度显著提升。默认情况下,EF Core 会用一条查询加载所有数据,包含集合时会产生 JOIN,导致父行重复。AsSplitQuery 虽然能解决部分问题,但之前版本在集合查询中仍会冗余加载参考导航,拖慢性能。EF Core 11 从预览版 3 开始,智能修剪了这些不必要的 JOIN,让查询更贴近手写 SQL 的效率。基准测试显示,在 .NET 11 环境下,不仅运行时间减少,内存分配也更低。这次优化不是银弹,但对复杂查询场景来说,绝对是实打实的性能提升。

EF Core 11 从预览版 3 开始,智能修剪了集合查询中的参考导航,让查询更贴近手写 SQL 的效率。
  • 有评论者指出,标准 SQL 缺乏处理嵌套数据的优雅方式,导致包含关联数据时产生严重的 Cartesian explosion,造成网络传输中的大量数据冗余。
  • 一位从业者分享经验称,AsSingleQuery 在包含大量关联实体时极其危险,而 AsSplitQuery 通过多轮查询避免了行数据重复,尽管增加了往返次数。
  • 有观点认为 EF Core 应原生支持 PostgreSQL 的 array_agg 或类似机制,以在单轮查询中避免行爆炸,而非仅依赖拆分查询。
  • EF Core 11 的性能提升核心在于优化了 AsSplitQuery 中引用导航的 Join 剪枝,消除了该模式长期存在的无效开销。

同日更多故事

2026-07-12