刚开始以为复杂的linq语句查询会不会比分开来写效率高,因为复杂的语句关联和嵌套多,执行应该慢。分开写虽然多了一次io处理,但是关联比较少,数据了比价少,和朋友讨了一下,回家就做了个测试,废话不多说,直接上代码。

  var dbconten2 = new SqlSugarTestEntities();Stopwatch sw2 = new Stopwatch();sw2.Start();var orderproduct = (from o in dbconten2.orderjoin p in dbconten2.product on o.sku equals p.skuselect new{sku=o.sku,name=o.name}).ToList();var lable = (from m in dbconten2.labelMbpjoin l in dbconten2.lable on m.lableID equals l.idselect new{sku=m.sku,img=l.imgUrl}).ToList();sw2.Stop();var results = (from a in orderproductjoin b in lable on a.sku equals b.sku into hfrom 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.orderjoin p in dbconten.product on o.sku equals p.skujoin m in dbconten.labelMbp on p.sku equals m.sku into mbpfrom mp in mbp.DefaultIfEmpty()join l in dbconten.lable on mp.lableID equals l.id into ldfrom 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 一样,花大把的时间争论,还不如自己花点时间测试

事实胜于雄辩,所有的讨论都没有直接测试来的直接。

转载于:https://www.cnblogs.com/kinggongwei/p/6777757.html

linq语句复杂查询和分开查询的性能对比相关推荐

  1. 链表和分开查询的区别

    区别在于:多次网络IO换取单次执行时间,还是单次执行时间换取多次网络IO 如果想要精准,就按照这个思路做测试:如果不想精准,大多数时候链表查询比分开查询要好 解决方案:如果十表联查或者更多,可以尝试添 ...

  2. C# 将控件的Controls属性下的所有控件取出以便使用LINQ语句进行查询

    /// <summary> /// 将容器的Contro属性下控件的转换成枚举类型以便使用LINQ语句进行查询/// </summary>/// <param name= ...

  3. Linq语句集成查询

    开发工具与关键技术: MVC 撰写时间:2021/6/18 Linq to SQL 全称基于关系数据的.NET 语言集成查询,用于以对象形式管理关系数据,我们常用Linq语句去查询SQL内的数据,可以 ...

  4. 使用EF配合Linq语句进行查询

    //创建一个EF对象var ef = new DemoDatabaseEntities1();//查询 Grade 表的数据 Id > 4 的记录IQueryable<Grade> ...

  5. oracle复杂的子查询,Oracle 子查询(复杂select语句)

    在执行数据操作时,如果某个操作需要依赖于另外一个 select语句的查询结果,那么就可以把 select 语句迁入到该操作语句中,这样就形成了一个子查询.实际应用中,表与表之间相互关联,相互依存,这样 ...

  6. mysql linq any查询_LINQ标准查询操作符详解(转)

    一. 关于LINQ LINQ 英文全称是"Language-Integrated Query",中文为"语言集成查询",它是微软首席架构师.Delphi 之父和 ...

  7. LINQ to DataSet实现复杂数据查询【下】

    Query1-所有学生成绩: 姓名:张三, 数学:80, 语文:75, 英语:78 姓名:王霞, 数学:88, 语文:80, 英语:60 姓名:赵敏, 数学:75, 语文:90, 英语:80 姓名:吴 ...

  8. oracle和mysql查询_ORACLE 数据库 查询语句与DML语句

    一.查询语句 ORACLE 数据库中获得数据表中的结果,称为查询语句,其关键词是 select(下面其所有的示例均为scott模式下的对象) 1.1 查询语句基础 1.1.1 获得表中全部字段与结果 ...

  9. mysql的语句分类,查询、子查询及连接查询

    一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数)  1.where常用运算符: 比较运算符 &g ...

最新文章

  1. 人脸检测对齐--Joint Cascade Face Detection and Alignment
  2. 依赖注入的三种方式_ASP.NET Core技术研究-探秘依赖注入框架
  3. java处理XSS过滤的方法
  4. 架构解密:从分布式到微服务
  5. (二十九)、Java字符串中去除空格
  6. php post 微信沙箱,微信支付平台错误:获取沙箱密钥失败,确保交易密钥是
  7. phonegap安装 环境搭建与配置详解(3.4 完整版 提供下载地址)
  8. Xshell连接mysql数据库乱码问题解决思路总结
  9. 物联卡的类型有几种,如何区分
  10. 用request.getParameterMap()获得jsp页面元素的集合出现[Ljava.lang.String;@的问题解决
  11. paip. c++ doxygen 文档工具的使用以及跟QT CREATOR的集成
  12. 生态 | 国内数据库领域权威学术会议NDBC 2020成功举办,人大金仓受邀参会并发表主题演讲...
  13. 用python做一个车牌识别_python利用百度云接口实现车牌识别
  14. web学习(3)--别踩白块儿(HTML版)(web入门)
  15. 2010-2019中国企业所有跨国并购数据
  16. 工信部华为鸿蒙,九零科技日报 华为鸿蒙系统疑似被曝光 工信部向三大运营商颁发5G牌照​...
  17. MBR生活污水处理设备常见参数的具体作用
  18. element级联选择器城市3级联动三级联动json数据
  19. 自动化爬取淘宝数据--(保存到文本中)
  20. 线性代数在计算机视觉的应用,线性代数在数据科学中的十大强大应用(二)

热门文章

  1. python pycurl_简单谈谈Python的pycurl模块_python
  2. java logout session_在jsp里做“退出登录”, session.setAttribute(id,null)居然出错。高手救命啊!...
  3. 怎么查询redis缓存的数据_阿里开发十年写出这份「Redis简明教程」+「Redis实战」请你查收...
  4. mysql可以运行计时_mysql的event schedule 计时执行
  5. linux+sed+-i替换路径,sed替换与别名配置
  6. linux内核丢弃udp报文,c++ Linux UDP数据包丢失的原因
  7. python绘制中国加油_软件开发|使用 Python 为你的油箱加油
  8. (转载)配置apue.h
  9. 5G信令(就是用户身份信息)风暴——就是客户端通过公钥加密的消息(携带手机IMSI号)发给服务端,服务器需用私钥解密,这个解密比较消耗资源,如果短时间大量请求到来就会触发信令风暴...
  10. 基于大数据审计的信息安全日志分析法