关于EF查询的性能
现象:前台grid发送ajax请求,通过谷歌devtool发现“waiting”时间高达23s(1500条数据);可见服务器端代码处理花费时间很长;
解决:分析代码,有两处代码注释掉后速度提升明显
//第一处,查询所有考试成绩:1500条
var data = _scoreResultService.GetAllKenScoreResults().ToList();
//去掉ToList()后查询时间减少明显(3s); //第二处;
foreach (var item in data)
{
KenScoreResultModel model = new KenScoreResultModel();
model = item.ToModel();
//var cus = _customerService.GetCustomerById(item.CustomerId);
//model.CustomerName = cus == null ? "未知用户名" : cus.GetFullName();
model.CustomerName = item.Customer.GetFullName(); //修改后的代码 使用导航属性 修改后waiting时间大幅下降(降低到769ms)
var course = _courseService.GetKenCourseById(item.CourseId); list.Add(model);
}
原因:前后查询时间差距有30倍之多……还没时间深究:1、第一种情况应该是EF延迟加载问题;2、第二种情况,如果不使用导航属性,一个成绩对应一名用户,1500条考试成绩,用户名查询查库就进行1500次,因此效率低,而使用导航属性在成绩查询时,已经包含了用户数据,因此不需要继续查库,不知道是否可以这样理解?有时间看看EF代码……
关于EF查询的性能的更多相关文章
- EF查询之性能优化技巧
上一篇:EF使用CodeFirst方式生成数据库&技巧经验 前言 EF相信大部分同学都已经经常使用了,可是你的查询高效吗? 今天我就以个人使用经验来讲讲在使用EF做查询的时候大家都容易忽略的性 ...
- EntityFramework之原始查询及性能优化(六)
前言 在EF中我们可以通过Linq来操作实体类,但是有些时候我们必须通过原始sql语句或者存储过程来进行查询数据库,所以我们可以通过EF Code First来实现,但是SQL语句和存储过程无法进行映 ...
- EF查询数据库框架的搭建
一个简单的EF查询框架除了运行项目外,大概需要5个类库项目,当然这个不是一定要这样做,这可以根据自己的需要设置有多少个项目.这里介绍的方法步骤只适合EF零基础的人看看就是了. 在开始之前,先建立一个运 ...
- EF查询百万级数据的性能测试--多表连接复杂查询
相关文章:EF查询百万级数据的性能测试--单表查询 一.起因 上次做的是EF百万级数据的单表查询,总结了一下,在200w以下的数据量的情况(Sql Server 2012),EF是可以使用,但是由于 ...
- asp.net core系列 32 EF查询数据 必备知识(1)
一.查询的工作原理 Entity Framework Core 使用语言集成查询 (LINQ) 来查询数据库中的数据. 通过 LINQ 可使用 C#(或你选择的其他 .NET 语言)基于派生上下文和实 ...
- php+mysql预查询prepare 与普通查询的性能对比
prepare可以解决大访问量的网站给数据库服务器所带来的负载和开销,本文章通过实例向大家介绍预查询prepare与普通查询的性能对比,需要的朋友可以参考一下. 实例代码如下: <?php cl ...
- EF查询视图只得到一条记录
1.出错结果:数据库表视图有多条数据,在使用EF框架进行查询时却只得到一条数据(注:拦截EF得到的sql语句在数据库进行查询并没有任务问题). 2.出错原因:该视图中没有ID或者主键,EF查询时进行反 ...
- linq和EF查询的用法和区分
我们做项目时,难免会遇到用的不知道是啥,及把linq和EF搞混了 今天我带领大家梳理下思路: 首先说linq查询,然后介绍EF查询 1.linq查询 当我们使用linq查询时,转到定义会调到Query ...
- EF查询生成的SQL
在EF 4和EF 3.5 SP1中,我们可以使用ToTraceString()方法得到EF查询所生成的SQL. using (var context = new TestDBEntities()) { ...
随机推荐
- 请注意designer中的NAME field
If you are trying to set the value of a field through PeopleCode and that field happens to be NAME t ...
- 实例化新的一个(new)
今天越到了一个特别尴尬的问题,其实特别简单就一句代码的事. PlayList pModel = new PlayList(); foreach (XmlNode xn1 in xnl) { ····· ...
- Cassandra 备份 - 1 - 节点镜像恢复
之前比较关注如何使用Cassandra,但是真正想大规模使用前提还是需要搞清楚备份机制,确保数据安全. 本文主要内容来自文档 "Cassandra2.2"的翻译.最后部分为真实操作 ...
- zabbix基本功能操作
上一篇我已经把zabbix server 和zabbix agent 安装在了同一台主机上,现在如何配置zabbix server监控自己. vim /etc/zabbix/zabbix_agentd ...
- GOOGLE 离线完整安装包下载地址
https://support.google.com/chrome/answer/126299?hl=zh-Hans 官方链接介绍 https://www.google.com/chrome/brow ...
- C 解决百度知道的一个高中题
前言 今天看见一道百度知道上提问,是这样的. 仔细算了一下, 花了30min.才整出来了,估计现在回去参加高考,数学及格都悬.有时候想做这样的题有什么用, 学这些东西有什么意义,在这种方面浪费时间有什 ...
- C/C++ 关于大小端模式
大端模式: 数据的高字节存在低地址 数据的低字节存在高地址 小端模式: 数据的高字节存在高地址 数据的低字节存在低地址 如图,i为int类型占4个字节,但只有1个字节的值为1,另外3个字节值为 ...
- Mongodb shell 基本操作
/opt/mongodb-2.6.6/bin > mongo 1. 查询本地所有数据库名称> show dbs 2. 切换至指定数据库环境(若无指定的数据库,则创建新的库)> use ...
- Redbean:入门(三) - Exec 以及 Query 以及 ConvertToBeans
<?php //引入rb入口文件 include_once 'rb.php'; //定义dsn以及相关的数据 $dsn = 'mysql:host=localhost;dbname=hwibs_ ...
- o2o家庭助手demo
前段时间跟一个同事出去游玩,在回来的大巴上面我们聊到了现在比较热门的o2o,说实话我自己早就想要在这个领域好好地玩一把.但是一直苦于没有很好地idea,再加上自己之前一直没有这方面的创业经验,所以一直 ...