优化Linq查询性能:使用AsNoTracking提升效率
优化后的代码如下:\n\nvar q = from a in GetIQueryable()\n join b in Db.GetIQueryable<Equipment_ChargingGunsInfo>() on a.ChargingGunId equals b.Id into tmp1\n from bb in tmp1.DefaultIfEmpty()\n join c in Db.GetIQueryable<Equipment_ChargingPileInfo>() on bb.ChargingPileId equals c.Id into tmp2\n from cc in tmp2.DefaultIfEmpty()\n where a.Deleted == false\n && bb.Deleted == false && bb.IsEnable == true\n && cc.Deleted == false && cc.IsEnable == true\n && cc.EnterpriseId == enterpriseId\n select new\n {\n a.ChargingBeginTime,\n a.ChargeCapacity,\n a.ServiceAmount\n };\n\n// 使用 AsNoTracking 来提高查询性能\nq = q.AsNoTracking();\n\ndecimal chargeCapacityYear = await q.Where(p => p.ChargingBeginTime >= startTimeYear && p.ChargingBeginTime <= endTimeYear).SumAsync(p => p.ChargeCapacity ?? 0);\ndecimal chargeCapacityMonth = await q.Where(p => p.ChargingBeginTime >= startTimeMonth && p.ChargingBeginTime <= endTimeMonth).SumAsync(p => p.ChargeCapacity ?? 0);\ndecimal chargeCapacityDay = await q.Where(p => p.ChargingBeginTime >= startTimeDay && p.ChargingBeginTime <= endTimeDay).SumAsync(p => p.ChargeCapacity ?? 0);
原文地址: https://www.cveoy.top/t/topic/prgP 著作权归作者所有。请勿转载和采集!