我进行了一个小测试,启用了延迟加载:loading.optionsBuilder.UseLazyLoadingProxies().UseSqlServer(ConnectionString);
(使用EF Core 2.1.4)
我正在循环处理有和没有乐器的情况,以下是我的结果:
情况1
var instruments = db.instruments.OrderBy(t=>t.id).Include(t=>t.NavPro1).ThenInclude(t=>t.NavPro2).Take(200);
案例2
var instruments = db.instruments.OrderBy(t=>t.id).Include(t=>t.NavPro1).ThenInclude(t=>t.NavPro2).Take(200);
那么
foreach (var i in instruments)
{
var props = i.NavPro1;
foreach (var prop in props)
{
sbPrintGreeks.AppendLine(prop.NavPro2.Name + " - " + prop.id + " - " + prop.Value);
}
}
没有使用懒加载时,获取100k行数据需要7秒。
使用懒加载时,获取3k行数据需要160秒。
如何提高性能?