位置: 编程技术 - 正文

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年新注册公司
  • 应交城建税和教育费附加计算分录
  • 固定资产公允价值减去处置费用后的净额
  • 机动车销售统一专票可以抵扣进项税额吗
  • 销售材料取得的进项税额
  • 医院收到工会的钱怎么办
  • 集团内部是什么意思
  • 以前年度取得假发票账务处理
  • 如何区分餐费发票和停车费发票?
  • 处置固定资产增值税税率
  • 专门从事股权投资的合伙企业投资收益 个人所得税
  • 提供有形动产租赁服务的增值税税率是
  • 支付给经销商的装修款怎么入账
  • 工程公司收到工程款
  • Windows server 2008设置远程桌面连接的详细步骤(图文教程)
  • windows10不会自动锁屏
  • 广告公司文化事业费怎么交
  • 增值税漏洞
  • 冲减坏账准备和计提坏账准备
  • 一般纳税人购进农产品如何抵扣进项税额
  • bios相关概念
  • 电脑开机时进入bios界面快捷键
  • 对公账户代扣
  • 苹果发布macOS更新
  • 无偿转让股权如何做账
  • 企业借款费用处理不当会产生什么样的后果呢?
  • 前端常见错误
  • 购进设备抵扣税额
  • docker部署webdav
  • 原材料按计划成本核算例题
  • springboot jni
  • uniapp下拉
  • cv计算机视觉定义
  • 合宪性审查程序
  • 回扣,折扣和佣金都具有违法性对吗
  • 加工费能直接抵税吗
  • 为SQLite3提供一个ANSI到UTF8的互转函数
  • 织梦常用调用标签
  • 所得税汇算清缴账务处理
  • 小企业会计准则适用于哪些企业
  • sqlserver查询时报00bop错误
  • SQL server 2008中的数据库能否只包含数据文件
  • 支付员工的餐费怎么入账
  • 怎样识别真假增值税发票
  • 律师事务所收到专票能抵扣吗合法吗
  • 费用少计提了怎么办
  • 进项税额转出在电子税务局怎么操作
  • 补提去年折旧费不需要调整所得税吗
  • 对外贸易出口公司
  • 公司车辆违章
  • 建筑工程公司需要哪些资质证书
  • 法人私户转公户备注什么
  • 飞机票退票费如何开票
  • 要交多少税收跟什么有关
  • 支票的使用流程图
  • 商业企业的期间费用包括
  • mysql 优化口诀
  • window怎么样
  • windows 文件名太长无法删除
  • win7登录设置
  • scanfile.exe
  • win8切换输入法无效
  • WIN10怎么彻底删除works2
  • javascript语句大全
  • jquery的validate前端表单验证
  • Android之Volley
  • android线程间通信的几种方法
  • jquery js区别
  • 武汉税务代理大概多少钱
  • 成都水费查询系统
  • 青岛市税务局长魏
  • 电子三方协议怎么下载
  • 广西国家税务局于红林
  • 税收优惠政策能调动公众的捐赠积极性
  • 浙江税务开票系统
  • 所得税汇算清缴退税税务局要来查账
  • 异辛烷征收消费税2023
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设