EF有关include的优化

 想预期的结果

A:[B:[C]]

 

 1、不使用include。

共执行SQL 12960次 80+6400+80+6400

数据库连接1-12960次 80+6400+80+6400

CPU执行

20971520000000+20971520000000/2+20971520000000/4+20971520000000/8+....次 
80 × 6400 × 80 × 6400 × 80为基数 并行计算分为24核心支撑。等着网络,慢

代码10行左右

2、使用include

共执行SQL1次

数据库连接1次

20971520000000+20971520000000/2+20971520000000/4+20971520000000/8+....次 

80 × 6400 × 80 × 6400 × 80为基数 并行计算分为24核心支撑。时间缩短。

代码10行左右

后者胜出

3、视图方案

共执行SQL一次

数据库连接1次

CPU执行20971520000000+20971520000000/2+20971520000000/4+20971520000000/8次。

80 × 6400 × 80 × 6400 × 80为基数并行计算分为24核心支撑。时间缩短。

代码200-500行左右,分组两次,稳定性不高,各种大小children,并行计算拿捏不稳

负载代码

 // 嵌套关联的优化使用
    var usersWithDetails = context.Users
                                  .Include(u => u.Orders)
                                  .ThenInclude(o => o.OrderDetails)
                                  .ToList();

 

posted on 2024-04-18 22:58  漫思  阅读(247)  评论(0编辑  收藏  举报

导航