位置: 编程技术 - 正文

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

  • 新办营利性医疗机构是否免征土地使用税和房产税?
  • 小规模税费如何做分录
  • 工会开户所需资料怎么写
  • 出口企业类别在哪里查
  • 一揽子交易定义
  • 房地产开发企业预收款预缴增值税
  • 土地增值税扣除系数
  • 未交增值税科目贷方负数怎么处理
  • 五证合一流程
  • 投标保证金支付时间
  • 购车 买车
  • 固定资产转到别人账户
  • 客户已经抵扣的发票怎么开负数发票给对方
  • 增值税开票员的岗位职责
  • 处理固定资产如何开票
  • 前期差错更正中所得税的会计处理
  • 建筑企业的职工由于不服管理违反规章制度
  • 未取得合法票据费用怎么算
  • 文化建设费的征收标准
  • 长期待摊费用原值怎么填
  • 上市公司非限售股股票转让收入
  • 营改增后增值税税率的调整
  • 工会财务任务是什么
  • 城市维护建设税的计税依据是什么
  • 小规模纳税人专票如何申报
  • 无偿使用固定资产如何缴税
  • 消费税应纳税额计算方法是什么有何特点
  • 空白发票怎么用
  • 财政性资金是不含税的吗
  • linux开启
  • 本月计提下月冲回
  • 跨月冲红发票需收回原发票
  • 会计基础工作是会计工作的基本环节
  • deepin声音
  • go是单进程还是多进程
  • php文件扩展名是什么
  • 购车人丢失发票怎么查
  • ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
  • php如何上传1个g以上的文件
  • 工商银行电子回执单怎么查看
  • 持有至到期投资是什么意思
  • PHP中include/require/include_once/require_once使用心得
  • 结转坏账准备是什么意思
  • macps字体怎么导入
  • 结转成本涉及的科目
  • 小规模纳税人当月应交增值税怎么算
  • MySQL的LEFT JOIN表连接的进阶学习教程
  • 小微企业所得税税率
  • 当月纳税申报期是什么意思
  • 以货换货账务怎么处理
  • 购买的固定资产退回账务处理
  • 餐饮个体户如何申请开票
  • 材料采购的账务怎么处理
  • 短期借款预提利息通过短期借款科目核算
  • 异地预缴税金
  • 小规模纳税人零售收入含税吗
  • 企业净利润流量怎么算
  • 物流公司驾驶员安全教育培训
  • 制造费用的明细账应当按照什么设置
  • 单位伙房费用管理制度
  • 代理记账需要什么章
  • 电脑开票怎么操作流程
  • 工会经费计提比例是2%还是0.8%
  • 公司开收据盖什么章
  • 汽车属于固定资产吗?如何计提折旧
  • 企业要建账需留什么资料
  • winds密码忘记了
  • Windows更新失败
  • xp系统 修复
  • 浅谈linux的发展方向和应用范围
  • centos设置双网卡
  • windows8使用技巧
  • python语言中
  • nodejs开发gui
  • 京东试用js脚本
  • 举例讲解生产可能性曲线
  • shell脚本中执行命令语句
  • jQuery ajax提交Form表单实例(附demo源码)
  • 登陆界面android
  • 个人所得税代扣代缴手续费退库申请
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设