博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF 数据查询效率对比
阅读量:6207 次
发布时间:2019-06-21

本文共 1771 字,大约阅读时间需要 5 分钟。

优化的地方:

  原地址: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
());//CreateMap应该是要写到Global.asax文件里面的 var scores = db.Scores .Take(5) .ProjectTo
()//需引用:using AutoMapper.QueryableExtensions; .ToList(); foreach (var item in scores) { var name = item.Student.Name; }

 

转载于:https://www.cnblogs.com/guxingy/p/9306236.html

你可能感兴趣的文章
深入框架本源系列 —— Virtual Dom
查看>>
mongodb分布式集群搭建手记
查看>>
您有一个上云锦囊尚未领取!
查看>>
Java Web的web.xml文件作用及基本配置(转)
查看>>
区块链101:区块链的应用和用例是什么?
查看>>
马约拉纳费米子:推动量子计算的“天使粒子”
查看>>
瑞立视:厚积薄发且具有“工匠精神”的中国品牌
查看>>
git与svn的区别 ?Git 与 SVN那个更好?
查看>>
使用ActionTrail Python SDK
查看>>
数据显示,中国近一半的独角兽企业由“BATJ”四巨头投资
查看>>
log日志轮转--logrotate
查看>>
安装输入发
查看>>
用户配置相关文件
查看>>
老王学linux-ftp
查看>>
kvm vnc的使用,鼠标漂移等
查看>>
linux中fcntl()、lockf、flock的区别
查看>>
gitlab 2.7版本升级到2.8
查看>>
linux用户空间和内核exit的语义--linux没有线程
查看>>
RedHat5.2下Linux Oracle 10g ASM 安装详细实录-第二篇-ASM安装
查看>>
乱花渐欲迷人眼-杜绝设计的视噪
查看>>