位置: 编程技术 - 正文

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语句实现分页效果)

  • 企业税收主要分为哪几类
  • 驾驶培训 增值税
  • 税务师财务与会计难不难
  • 融资租赁和经营租赁的特点
  • 测试费用
  • 无形资产按几年摊
  • 跨月红冲发票如何申报退税
  • 税务外管证取消了吗
  • 预算分配比例与国库不一样
  • 企业收到的投资者的超出其在企业
  • 企业跨年补开发票
  • 出口专用发票应在哪里开
  • 研发机构认定条件
  • 行政单位特殊人工手机电话费是否可以报销
  • 出口退税收入做什么科目
  • 职工出差餐费计入什么科目
  • 全年累积盈利交所得税吗?
  • 接受现金捐赠怎么写分录
  • 进口免税店的东西都是正品吗
  • 增值税小规模纳税人的税率
  • 没有道路许可证可上营运吗
  • 信用减值损失借方余额在利润表中
  • 局域网内如何设置静态ip
  • 网速突然减慢
  • 新成立的公司没有社保如何投标
  • 电脑开机画面都是英文怎么处理
  • macOS Big Sur 11.3 开发预览版 Beta正式更新
  • phpforeach遍历二维数组
  • php面向对象编程
  • PHP:imagerectangle()的用法_GD库图像处理函数
  • vue如何预加载图片
  • uniapp怎么做适配
  • php登录注册页面完整代码
  • php去除指定字符
  • ci框架api版本
  • 月收入10万以下免增值税
  • 没有发票的支出可以扣除企业所得税么
  • ps2021和cs6有什么区别
  • 统一社会信用代码多少
  • 试运行收入账务处理
  • Spring(三)-AOP
  • 出让土地的土地出让金与抵押权
  • 公积金怎么推出工资
  • 在excel中怎么制作
  • 企业哪些情况下需要报税
  • sql server 2008 2014
  • 印花税减免税优惠政策2019
  • 估价入帐能跨年吗
  • 应交税费科目怎么调整
  • 子公司的注册资金需要母公司股东出吗?
  • 管理费用现金流量附表指定
  • 购入的技术服务作为成本
  • 年末利润如何计算
  • 母公司代发子公司工资,子公司申报个税
  • 待处理财产损益会计分录
  • 研发支出资本化和费用化的区别
  • 新办企业必须经过什么核准登记
  • 利税总额怎么算?
  • 怎样把有余额的钱取出来
  • 隐藏在大山深处的罪恶
  • 全国县市区最多的省
  • linux中df命令详解
  • win10累积更新 卡住
  • zzs.exe是病毒吗
  • ubuntu20.04换阿里源
  • linux扩容inode
  • win10系统桌面图标有白色方框的解决方法图...
  • cocos2djs
  • js导入图片
  • 微信小程序实现账号密码登录
  • 拖拽js实现
  • macos安装过程
  • shell脚本中执行命令语句
  • shader要学多久
  • python生成器有几种写法
  • windows2003服务器管理器在哪里
  • three. js
  • js中切割字符串
  • 地税局一般几点下班
  • 沈阳特慢病待遇
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设