优化的地方:

  原地址: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()
.ProjectTo<ScoresDto>()//需引用:using AutoMapper.QueryableExtensions;
.ToList();
foreach (var item in scores)
{
var name = item.Student.Name;
}

EF 数据查询效率对比的更多相关文章

  1. WFS: postgresql(postgis)和shp文件查询效率对比

    对GeoServer上的WFS的各种数据源查询效率感兴趣,做个测试.本次测试了Postgresql.geopackage.shp文件三种数据源的查询效率,无论是本机还是服务器环境,pg存储查询效率都比 ...

  2. sqlserver 数据查询效率优化

    首先优化是具体情况具体分析,从硬件.改进表结构.索引.改进sql查询语句.存储方式都有关系等多方面入手 比如单表数据量(100w-200w条)不大的情况下,查询效率慢 可以从优化sql语句.对多个排序 ...

  3. EF – 3.EF数据查询基础(下)数据关联

    5.5.1 <关于“数据关联”,你不一定清楚的事> 这讲视频比较全面地介绍了“一对一”.“一对多”和“多对多”三种数据关联类型在关系数据库和Entity Framework数据模型中的实现 ...

  4. EF – 2.EF数据查询基础(上)查询数据的实用编程技巧

    目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...

  5. 关于vector push_back()与其他方式读取数据的效率对比

    引言: 在读取大量数据(数组)时,使用vector会尽量保证不会炸空间(MLE),但是相比于scanf的读取方式会慢上不少.但到底效率相差有多大,我们将通过对比测试得到结果. 测试数据:利用srand ...

  6. EF – 2.EF数据查询基础(上)查询数据的实用编程技巧

    目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...

  7. 关于vector push_back()与其他方式读取数据的效率对比(转)

    引言: 在读取大量数据(数组)时,使用vector会尽量保证不会炸空间(MLE),但是相比于scanf的读取方式会慢上不少.但到底效率相差有多大,我们将通过对比测试得到结果. 测试数据:利用srand ...

  8. Hibernate查询效率对比

    查询已知表名的实体时推荐使用getHibernateTemplate().executeWithNativeSession() + SQLQuery方式. 以下测试使用JUnit进行,仅查询一次,查询 ...

  9. Java使用JDBC连接数据库逐条插入数据、批量插入数据、以及通过SQL语句批量导入数据的效率对比

    测试用的示例java代码: package com.zifeiy.test.normal; import java.io.File; import java.io.FileOutputStream; ...

随机推荐

  1. spring boot controller设置 @Transactional 不回滚的解决办法

    @Transactional @ApiOperation(value = "添加一个用户信息") @RequestMapping(value = "/create&quo ...

  2. JS+Ajax+Servlet:记录页面访问时间

    1.前端JS记录页面访问时间 1.1JQuery版本: <script type="text/javascript" src="js/jquery.min.js&q ...

  3. 删除n天前的所有目录和文件

    删除目录 find /your_dir/ -maxdepth -type d -mtime + -exec rm -rf {} \; 删除文件 find /目录/ -mtime + -name &qu ...

  4. IE 主页被恶意篡改的解决方法

    IE 主页被篡改了,在ie 的 主页设置中不起任何作用,这个时候,就要打开注册表来修改: 具体操作如下: 1.运行 regedit  打开注册表 2.找到 HKEY_LOCAL_MACHINE\SOF ...

  5. vmware centos7 动态ip->静态

    TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_ ...

  6. 【Selenium-WebDriver自学】WebDriver断言处理(十二)

    断言使用 http://www.cnblogs.com/itliucheng/p/5578788.html http://blog.csdn.net/gzh0222/article/details/7 ...

  7. StanFord ML 笔记 第六部分&&第七部分

    第六部分内容: 1.偏差/方差(Bias/variance) 2.经验风险最小化(Empirical Risk Minization,ERM) 3.联合界(Union bound) 4.一致收敛(Un ...

  8. tornado项目注意点

    大体框架思想 如果你做的项目是偏向中小型的话,MTV或者MVC已经足够支撑起整个项目,而如果你做的项目比较大大话,或者说可能以后的业务量很大的话,那你就需要用到四层架构的思想了,那么我们就各自分析下俩 ...

  9. 浮动ip原理及简单实现

    原理:https://blog.csdn.net/readiay/article/details/53538085 简单实现:https://www.cnblogs.com/victorwu/p/70 ...

  10. CentOS7 安装 Mongodb 与 NodeJs 主要心得

    一.mongodb 1.安装 由于使用yum源下载安装总是超时,所以选择了tarball方式安装. 官方安装方法链接,https://docs.mongodb.com/manual/tutorial/ ...