linq语句复杂查询和分开查询的性能对比
刚开始以为复杂的linq语句查询会不会比分开来写效率高,因为复杂的语句关联和嵌套多,执行应该慢。分开写虽然多了一次io处理,但是关联比较少,数据了比价少,和朋友讨了一下,回家就做了个测试,废话不多说,直接上代码。
var dbconten2 = new SqlSugarTestEntities();
Stopwatch sw2 = new Stopwatch();
sw2.Start();
var orderproduct = (from o in dbconten2.order
join p in dbconten2.product on o.sku equals p.sku
select new
{
sku=o.sku,
name=o.name
}).ToList();
var lable = (from m in dbconten2.labelMbp
join l in dbconten2.lable on m.lableID equals l.id
select new
{
sku=m.sku,
img=l.imgUrl
}).ToList();
sw2.Stop();
var results = (from a in orderproduct
join b in lable on a.sku equals b.sku into h
from n in h.DefaultIfEmpty()
select new
{
sku = a.sku,
img =n==null?"": n.img,
name = a.name
}).ToList(); var time2 = sw2.ElapsedMilliseconds.ToString(); var dbconten = new SqlSugarTestEntities();
Stopwatch sw = new Stopwatch();
sw.Start();
var result = (from o in dbconten.order
join p in dbconten.product on o.sku equals p.sku
join m in dbconten.labelMbp on p.sku equals m.sku into mbp
from mp in mbp.DefaultIfEmpty()
join l in dbconten.lable on mp.lableID equals l.id into ld
from d in ld.DefaultIfEmpty()
select new
{
sku = p.sku,
img = d.imgUrl,
name = o.name });
var ss = result.ToList();
var aa= ss.GroupBy(g => g.sku).ToList(); sw.Stop();
var time = sw.ElapsedMilliseconds.ToString();
Console.WriteLine("linq:" + time);
//Console.WriteLine("分开:" + time2);
数据库io操作耗时还是比价大的,在操作数据库时能一次查询出来就不用多次。
性能永远是个值得讨论的话题,直接自己真正的测试了才知道结果,就像好多人争论的 in,not in 一样,花大把的时间争论,还不如自己花点时间测试
事实胜于雄辩,所有的讨论都没有直接测试来的直接。
linq语句复杂查询和分开查询的性能对比的更多相关文章
- MVC4数据访问EF查询linq语句的时候报错找不到表名问题
一天做项目的时候遇到这样的问题,MVC4用EF访问数据查询用linq语句的时候报错找不到表名:报错如下图: 研究了几种情况,最后还是没有找到正真的问题所在,不过可能是和路由解析问题有关,暂时还没有进行 ...
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...
- LINQ之路 8: 解释查询(Interpreted Queries)
LINQ提供了两个平行的架构:针对本地对象集合的本地查询(local queries),以及针对远程数据源的解释查询(Interpreted queries). 在讨论LINQ to SQL等具体技术 ...
- LINQ之路 7:子查询、创建策略和数据转换
在前面的系列中,我们已经讨论了LINQ简单查询的大部分特性,了解了LINQ的支持计术和语法形式.至此,我们应该可以创建出大部分相对简单的LINQ查询.在本篇中,除了对前面的知识做个简单的总结,还会介绍 ...
- sql查询语句如何解析成分页查询?
我们公司主要mysql存储数据,因此也封装了比较好用mysql通用方法,然后,我们做大量接口,在处理分页查询接口,没有很好分查询方法.sql查询 语句如何解析成“分页查询”和“总统计”两条语句.可能, ...
- LinQ实战学习笔记(三) 序列,查询操作符,查询表达式,表达式树
序列 延迟查询执行 查询操作符 查询表达式 表达式树 (一) 序列 先上一段代码, 这段代码使用扩展方法实现下面的要求: 取进程列表,进行过滤(取大于10M的进程) 列表进行排序(按内存占用) 只保留 ...
- T-SQL查询语句(三):多表查询
SQL查询语句<三>:多表查询 (也叫连接查询,此处为基于两个表的连接查询)如果一个查询需要对多个表进行操作就称为连接查询,连接查询的结果集或结果称为表之间的连接.连接查询实际上是通过各个 ...
- LINQ to Sql系列二 简单查询和联接查询
这一篇文章主要总结LINQ to sql的简单查询(单表查询)和联接查询(多表查询) 单表查询 需求是我们要输出TClass表中的结果.使用了from-in-select语句,代码如下: public ...
- C# Linq to Entity 多条件 OR查询
技术背景:框架MVC,linq to Entity 需要一定的lambda书写能力 问题:在简单的orm中完成一些简单的增删查改是通过where insert delete update 完成的,但是 ...
随机推荐
- ASP.NET MVC创建视图过程
MvcHandler.ProcessRequest() (1)获取Action执行结果:context2.Result ActionExecutedContext context2 = this. ...
- iOS开发RunLoop
最近处于离职状态,时间也多了起来,但是学习还是不能放松,今天总结一下RunLoop,RunLoop属于iOS系统层的东西,还是比较重要的. 一.什么是RunLoop 字面意思看是跑圈,也可以看作运行循 ...
- Opencv2.4.13 与Visual Studio2013 环境搭建配置
opencv这个工具来进行图像处理.大致是使用C++语言编写程序实现识别算法的实现,所以首先就要进行opencv与VS环境的配置. Shaine属于那种半路出家之人都算不上的那种,本科期间三四 ...
- WinFrom中使用WPF的窗体
步骤 1.添加WindowsFormsIntegration.dll .System.Windows.Forms.和System.Xaml,PresentationCore.PresentationF ...
- Zabbix 2.2.x, 3.0.x SQL注射漏洞修复方法
1.漏洞测试 在您的zabbix的地址后面加上如下url: jsrpc.php?type=&method=screen.get×tamp=&pageFile=hist ...
- iwebshop上传类的使用
$upload = new IUpload('10240000',array('jpg','gif','png')); $dir = "upload/dian"; $upload- ...
- Nginx网站使用CDN之后禁止用户真实IP访问的方法
做过面向公网WEB的运维人员经常会遇见恶意扫描.拉取.注入等图谋不轨的行为,对于直接对外的WEB服务器,我们可以直接通过 iptables .Nginx 的deny指令或是程序来ban掉这些恶意请求. ...
- 老李分享:JDK,JRE,JVM区别与联系
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...
- 老李分享:jvm内存原型剖析
老李分享:jvm内存原型剖析 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:9088214 ...
- Android自定义View之音频条形图
2016-04-12 17:52 76人阅读 评论(2) 收藏 举报 分类: Android(26) 版权声明:本文为博主原创文章,未经博主允许不得转载. 新建项目,新建MusicRectangl ...