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();
漫思