位置: 编程技术 - 正文

Cont()与Where().Count()有时性能差别如此之大!

编辑:rootadmin
想起我之前在此列表中加入了一个字段,用于方便提示管理员公司的产品列表是否有修改之类的状态字段,于是可以断定是加了此字段的原因。 首先,先看看我之前是如何写这个提示状态字段的,实体中加入ContentStatus,然后直接在Linq语句中Select 实体对象中加入ContentStatus=Product_Maintain.Count(C => C.CompanyID == company.ID && C.IsDeleted == 0 && (C.AuditStatus == 0 || C.AuditStatus == 4))>0?"产品有更新":""。这时我想应该是加入三元运算,linq在转Sql时,产生过多的,Case,when ,then语句,三元运算增加了判断会影响查询性能,于是我去掉后,再运行查看页面,仍然很慢,感觉不出快了多少。 这时,我想起了LinqPad,看看到底转换生成了怎样的Sql语句。运用Count(条件)生成Sql代码如下: 这时我发现一个很简单的Count的Sql 语句,linq转换后变得如此复杂,我直接在sql server中运行此代码,发现查询还是很慢,于是我直接把ContentStatus=Product_Maintain.Where(C => C.CompanyID == company.ID && C.IsDeleted == 0 && (C.AuditStatus == 0 || C.AuditStatus == 4)).Count()生成Sql语句为: 代码 发现运行速度那是快了一个数量级啊! 后台列表查询结果速度大大提升有图为证(声明:以下图都为项目中截图,不是简单的单表查询,还连了用户表,详细表等数量也都挺大的):

推荐整理分享Cont()与Where().Count()有时性能差别如此之大!,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Cont()与Where().Count()有时性能差别如此之大!

图1为Count结果,用了秒,哇塞!

图2为Where(条件).Count()结果,同样的数据只用了4秒钟,差了倍!

然后为了取值方面我还是加入三元运算,ContentStatus=Product_Maintain.Where(C => C.CompanyID == company.ID && C.IsDeleted == 0 && (C.AuditStatus == 0 || C.AuditStatus == 4)).Count()>0?"产品有更新":""。结果如下:

真的是Count()与 Where()区别,不可能这么大差距吧?于是我单写 Product_Maintain.Where(C => C.IsDeleted == 0 && (C.AuditStatus == 0 || C.AuditStatus == 4)).Count() 与 Product_Maintain.Count(C => C.IsDeleted == 0 && (C.AuditStatus == 0 || C.AuditStatus == 4)) 发现速度差不多,生成的代码是一样的。 原来是我如果在Select中取某表的数量并且条件中使用了之前from后的某个变量时,这时用Count(条件)和Where(条件).Count()产生代码才会不同,查询速度才会出现数量级的差别。 代码 与 否则,Count()与Where().Count()生成的SQL语句是相同的,效率也一样。 总结到此,望各位看官以后要注意!本人入园两年来,第一发在首页,请各位看官不吝赐教! 谢谢各位看官的指点,声明下以上查询图都LinqPad查询结果截图。至于为啥4秒左右为LinqPad查询时间,Linq生成Sql语句在Sql Server中执行不到1秒,以下截图作解释:

用sql语句实现分离和附加数据库的方法 对于用ManageStudio自己看着界面操作就可以应付了。分离数据库:对于用存储过程来分离数据库,如果发现无法终止用户链接,可以使用ALTERDATABASE命令,

SQL高级应用之使用SQL查询Excel表格数据的方法 execsp_configure'showadvancedoptions',1reconfigureexecsp_configure'AdHocDistributedQueries',1reconfigureSELECT*FROMOPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','DataSource=E:HaierWebMyWebDocabc.xls;Ex

分享网站群发站内信数据库表设计 站内信不同于电子邮件,电子邮件通过专门的邮件服务器发送、保存。而站内信是系统内的消息,说白了,站内信的实现,就是通过数据库插入记录来

标签: Cont()与Where().Count()有时性能差别如此之大!

本文链接地址:https://www.jiuchutong.com/biancheng/349801.html 转载请保留说明!

上一篇:SQL2000 全文索引完全图解(sql中索引怎么使用)

下一篇:用sql语句实现分离和附加数据库的方法(用sql语句实现分页效果)

  • 外商投资企业要实缴资本么
  • 小规模纳税人企业购进货物和接受应税劳务时
  • 合并报表是把资产负债表相加吗
  • 实收资本变动额怎么算
  • 报税软件费用可以退吗
  • 2019印花税减免
  • 销售产品结转成本怎么算
  • 进口货物会计分录举例
  • 没收到发票可以做成本吗
  • 销售原材料收到商业承兑汇票会计分录
  • 增值税开错了
  • 餐饮发票税钱
  • 去年的税还能退吗
  • 企业一次性补助金是多少标准
  • 材料费用定额是什么意思
  • 职工报销费用的处理流程
  • 期初数据科目期初余额怎么录入?
  • 企业所得税怎么征收
  • 非居民企业租赁增值税
  • 审计资产评估收费标准
  • 建筑行业营改增税率变化
  • 将原材料变成成品的过程
  • 支付水费现金流量
  • 坏账准备如何做账
  • php输出mysql查询结果
  • 心绞痛的早期症状表现有哪些
  • 以经营租赁方式租入的设备要折旧吗
  • msg3.0.db是什么文件
  • 工业厂房修建需要哪些手续
  • linux创建一个文件并写入内容
  • vue前端组件库
  • 汽车运输企业的实际成本计算单位是
  • 特许权使用费属于无形资产吗
  • 废品损失的核算一定要设废品损失账户吗
  • 进销存如何结转成本
  • php关键字描红
  • 白酒赠送消费税计算
  • echartsgrid属性
  • php执行命令的函数
  • 企业所得税中工资总额
  • libpcap python
  • 如何用python绘制
  • 每月工资不一样怎么算误工费呢
  • 取得虚开普票如何处置
  • 其他应收款是负数怎么报税
  • 应收款项减值讲解视频
  • 上下班出车祸公司怎么赔偿
  • 印花税记入哪个费用
  • 公司购买的车辆折旧年限
  • 建筑材料资源税
  • 库存商品调价会计分录
  • 什么是结构性存款基金
  • 购买药材的发票如何抵扣?
  • 暂估入库后发票来不了会计分录
  • 会计做账手工帐
  • 账户记录试算不平衡说明记账肯定有差错对吗
  • 生产费用总分类核算的程序包括
  • sql如何截取字段
  • 提高sql执行效率的方法
  • mysql正则表达式匹配数字
  • windows 2003 iis+php5+mysql+phpmyadmin 详细安装配置
  • 老毛桃2013 U盘启动盘和重装系统图文教程
  • win8如何关闭开始屏幕
  • 如何关闭office开机自启动
  • win8系统忘记密码电脑重置
  • win7系统桌面不能新建文件夹
  • win7系统电脑开不了机怎么办
  • json的用法
  • alt用不了
  • Android ViewStub 布局延迟加载
  • javascript 基础
  • js跳出if语句
  • Python使用QQ邮箱发送Email的方法实例
  • node.js ajax
  • js中concat的用法
  • No active compatible AVD's or devices found. Relaunch this configuration after connecting a device o
  • 预征率为2%预征税额怎么算
  • 增值税专用发票电子版
  • 土地面积测量
  • 股息税怎么计算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设