EF 数据查询效率对比
2023-09-11 14:22:28 时间
优化的地方:
原地址:https://www.cnblogs.com/yaopengfei/p/9226328.html
①:如果仅是查询数据,并不对数据进行增、删、改操作,查询数据的时候可以取消状态追踪。
db.TestInfor.AsNoTracking().FirstOrDefault();
②:用什么查什么,比如一张表有100多个字段,本次业务只需要5个字段,一定是select这5个字段,然后toList,而不是全部查询,再toList()。
③:利用EF调用原生SQL语句或者EF调用存储过程执行。
EF数据查询效率对比:
原地址:https://www.cnblogs.com/zhaopei/p/5721789.html
1、实质:没有连表
var scores = db.Scores.Take(5).ToList();
foreach (var item in scores)
{
var name = item.Student.Name;//每次循环 都会产生一条sql
}
2、实质:连了表Student。
使用Include需要引用命名空间 using System.Data.Entity;
缺陷:连表时,会把子表的字段全部查询出来
var scores = db.Scores.Take(5).Include(c => c.Student).ToList();
foreach (var item in scores)
{
var name = item.Student.Name;
}
使用 .Include(c => c.Student) 需要引用 System.Data.Entity;
3、减少了 内存存储空间 和 应用程序与数据库的数据传输带宽。
实质:SQL查询的字段变少了
缺陷:一个字段一个字段的手动映射
var scores = db.Scores
.Take(5)
.Include(c => c.Student)
.Select(c => new { c.ChineseFraction, c.CreateTime, StudentName = c.Student.Name })
.ToList();
foreach (var item in scores)
{
var name = item.StudentName;
}
4、避免在循环中访问导航属性多次执行sql语句。
避免了查询语句中太多的手动映射,影响代码的阅读。
Mapper.Initialize(x => x.CreateMap<Score, ScoresDto>());//CreateMap应该是要写到Global.asax文件里面的 var scores = db.Scores .Take(5) .ProjectTo<ScoresDto>()//需引用:using AutoMapper.QueryableExtensions; .ToList(); foreach (var item in scores) { var name = item.Student.Name; }
相关文章
- 如何提高测试用例评审效率?
- UWA 六月直播季 | 6.15 Unity引擎渲染效率全解析
- Google Earth Engine——找不到想要的数据,一招让你效率提高10倍!
- 关于java中redis操作直接使用jedis和使用springboot封装的RedisTemplate效率对比和主要区别
- 对程序设计初学者谈程序的效率
- 如何五分钟体验阿里巴巴的研发效率和质量?
- KDE社区推ALERT开源工具集提升开发效率
- JAVA--AI编程助手【代码智能补全工具】盘点,让AI提高你的编程效率
- 从零开始学正则(六),如何提升正则准确性与效率
- 低代码平台如何一步步摧毁开发团队的效率与创新!
- 对JSP和Servlet性能优化,提升执行效率
- 数据信息驱动工业革命 提高数据清洗效率成为核心之重
- 五十个小技巧提高PHP执行效率(一)
- 高性能WEB开发:Javascript自身执行效率
- Linux 命令行使用快捷键提高命令输入效率
- 多阶段元数据一致性分析——助力北京银行实现IT运营效率提升
- CAD数据提取怎么用?学会这个功能绘图效率翻倍!
- 大数据时代,合作才能有效提升资源配置和使用效率