全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

MySql批量插入优化Sql执行效率实例详解

MySql批量插入优化Sql执行效率实例详解

itemcontractprice数量1万左右,每条itemcontractprice 插入5条日志。

updateInsertSql.AppendFormat("UPDATE itemcontractprice AS p INNER JOIN foreigncurrency AS f ON p.ForeignCurrencyId = f.ContractPriceId SET p.RemainPrice = f.RemainPrice * {0},p.BuyOutPrice = f.BuyOutPrice * {0},p.ReservedPrice = f.ReservedPrice * {0},p.CollectedPrice = f.CollectedPrice * {0},p.AccessPrice = f.AccessPrice * {0} WHERE p.CurrencyId = {1} AND p.date BETWEEN '{2:yyyy-MM-dd}' AND '{3:yyyy-MM-dd}';", rate.ExchangeRate, exchangeRate.CurrencyId, rate.BeginDate, rate.EndDate); 
 
updateInsertSql.AppendFormat("INSERT INTO `itemcontractpricelog`(`ContractPriceType`,`ContractPrice`,`FcContractPrice`,`IsExpire`,`LogRemark`,`CreatedByName`,`CreatedById`,`CreatedDate`,`LogTypeId`,`ProviderId`,`StageId`,`Date`,`CurrencyId`,`ContractPriceId`,`StockPattern`,`ItemId`) SELECT 0,c.RemainPrice,f.RemainPrice,c.RemainIsExpire,'外币汇率调整,重新计算人民币底价','job',0,NOW(),5,c.ProviderId,c.StageId,c.Date,c.CurrencyId,c.ContractPriceId,0,c.ItemId FROM itemcontractprice AS c INNER JOIN foreigncurrency AS f ON c.ForeignCurrencyId = f.ContractPriceId WHERE c.CurrencyId={0} AND c.date BETWEEN '{1:yyyy-MM-dd}' AND '{2:yyyy-MM-dd}';", exchangeRate.CurrencyId, rate.BeginDate, rate.EndDate); 
 
updateInsertSql.AppendFormat(" INSERT INTO `itemcontractpricelog`(`ContractPriceType`,`ContractPrice`,`FcContractPrice`,`IsExpire`,`LogRemark`,`CreatedByName`,`CreatedById`,`CreatedDate`,`LogTypeId`,`ProviderId`,`StageId`,`Date`,`CurrencyId`,`ContractPriceId`,`StockPattern`,`ItemId`) SELECT 1,c.BuyOutPrice,f.BuyOutPrice,c.BuyOutIsExpire,'外币汇率调整,重新计算人民币底价','job',0,NOW(),5,c.ProviderId,c.StageId,c.Date,c.CurrencyId,c.ContractPriceId,0,c.ItemId FROM itemcontractprice AS c INNER JOIN foreigncurrency AS f ON c.ForeignCurrencyId = f.ContractPriceId WHERE c.CurrencyId={0} AND c.date BETWEEN '{1:yyyy-MM-dd}' AND '{2:yyyy-MM-dd}';", exchangeRate.CurrencyId, rate.BeginDate, rate.EndDate); 
 
updateInsertSql.AppendFormat("INSERT INTO `itemcontractpricelog`(`ContractPriceType`,`ContractPrice`,`FcContractPrice`,`IsExpire`,`LogRemark`,`CreatedByName`,`CreatedById`,`CreatedDate`,`LogTypeId`,`ProviderId`,`StageId`,`Date`,`CurrencyId`,`ContractPriceId`,`StockPattern`,`ItemId`) SELECT 2,c.ReservedPrice,f.ReservedPrice,c.ReservedIsExpire,'外币汇率调整,重新计算人民币底价','job',0,NOW(),5,c.ProviderId,c.StageId,c.Date,c.CurrencyId,c.ContractPriceId,0,c.ItemId FROM itemcontractprice AS c INNER JOIN foreigncurrency AS f ON c.ForeignCurrencyId = f.ContractPriceId WHERE c.CurrencyId={0} AND c.date BETWEEN '{1:yyyy-MM-dd}' AND '{2:yyyy-MM-dd}';", exchangeRate.CurrencyId, rate.BeginDate, rate.EndDate); 
 
updateInsertSql.AppendFormat("INSERT INTO `itemcontractpricelog`(`ContractPriceType`,`ContractPrice`,`FcContractPrice`,`IsExpire`,`LogRemark`,`CreatedByName`,`CreatedById`,`CreatedDate`,`LogTypeId`,`ProviderId`,`StageId`,`Date`,`CurrencyId`,`ContractPriceId`,`StockPattern`,`ItemId`) SELECT 3,c.CollectedPrice,f.CollectedPrice,c.CollectedIsExpire,'外币汇率调整,重新计算人民币底价','job',0,NOW(),5,c.ProviderId,c.StageId,c.Date,c.CurrencyId,c.ContractPriceId,0,c.ItemId FROM itemcontractprice AS c INNER JOIN foreigncurrency AS f ON c.ForeignCurrencyId = f.ContractPriceId WHERE c.CurrencyId={0} AND c.date BETWEEN '{1:yyyy-MM-dd}' AND '{2:yyyy-MM-dd}';", exchangeRate.CurrencyId, rate.BeginDate, rate.EndDate); 
updateInsertSql.AppendFormat("INSERT INTO `itemcontractpricelog`(`ContractPriceType`,`ContractPrice`,`FcContractPrice`,`IsExpire`,`LogRemark`,`CreatedByName`,`CreatedById`,`CreatedDate`,`LogTypeId`,`ProviderId`,`StageId`,`Date`,`CurrencyId`,`ContractPriceId`,`StockPattern`,`ItemId`) SELECT 4,c.AccessPrice,f.AccessPrice,c.AccessIsExpire,'外币汇率调整,重新计算人民币底价','job',0,NOW(),5,c.ProviderId,c.StageId,c.Date,c.CurrencyId,c.ContractPriceId,0,c.ItemId FROM itemcontractprice AS c INNER JOIN foreigncurrency AS f ON c.ForeignCurrencyId = f.ContractPriceId WHERE c.CurrencyId={0} AND c.date BETWEEN '{1:yyyy-MM-dd}' AND '{2:yyyy-MM-dd}';", exchangeRate.CurrencyId, rate.BeginDate, rate.EndDate); 
//var curContractPriceList = itemContractPriceList.Where(o => o.CurrencyId == exchangeRate.CurrencyId && o.Date >= rate.BeginDate && o.Date <= rate.EndDate).ToList(); 
logger.InfoFormat("底价更新和日志sql:{0}", updateInsertSql.ToString()); 
//if (curContractPriceList.Count == 0) continue; 
int effctRows = 0; 
using (var tran = UnitOfWorkManager.Begin()) 
{ 
  effctRows = taskRepository.ExecuteSql(updateInsertSql.ToString(), false); 
  tran.Complete(); 
} 
logger.InfoFormat("底价更新影响行数:{0}", effctRows); 

正常情况下大概20秒钟就ok.

之前是用EF操作,查询出来 ,要耗时,然后再组装 update语句 ,然后再插入日志(每条数据5条日志),这个网络交互的时间加上数据库连接打开关闭的时间,总的执行时间,大概10多分钟。

用sql语句批量操作,可以说效率提升了 40倍,就是大量数据的传输和数据库的处理次数耗时。

所以说,软件开发不是开发完成就行,而是要解决性能上的问题,这才是开发的进阶。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# MySql批量插入优化Sql执行效率  # MySql  # 优化Sql效率  # mysql大批量插入数据的4种方法示例  # MYSQL批量插入数据的实现代码  # MySQL实现批量插入以优化性能的教程  # MySQL批量插入遇上唯一索引避免方法  # Mysql使用insert插入多条记录 批量新增数据  # mysql 循环批量插入的实例代码详解  # MySQL批量插入数据脚本  # MySQL批量SQL插入性能优化详解  # MySQL通过函数存储过程批量插入数据  # 然后再  # 新和  # 每条  # 进阶  # 可以说  # 执行时间  # 就行  # 希望能  # 谢谢大家  # 行数  # 情况下  # 这才是  # 而是要  # exchangeRate  # dd 


相关文章: 广州商城建站系统开发成本与周期如何控制?  建站之星展会模板:智能建站与自助搭建高效解决方案  如何选择高效响应式自助建站源码系统?  建站主机选购指南:核心配置优化与品牌推荐方案  定制建站哪家更专业可靠?推荐榜单揭晓  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  昆明网站制作哪家好,昆明公租房申请网上登录入口?  如何快速重置建站主机并恢复默认配置?  如何在宝塔面板中修改默认建站目录?  内部网站制作流程,如何建立公司内部网站?  公司门户网站制作流程,华为官网怎么做?  建站主机与服务器功能差异如何区分?  常州企业建站如何选择最佳模板?  如何通过老薛主机一键快速建站?  香港服务器租用每月最低只需15元?  西安大型网站制作公司,西安招聘网站最好的是哪个?  seo网站制作优化,网站SEO优化步骤有哪些?  如何快速搭建高效服务器建站系统?  ,巨量百应是干嘛的?  企业微网站怎么做,公司网站和公众号有什么区别?  如何快速查询域名建站关键信息?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  建站之星3.0如何解决常见操作问题?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  如何快速使用云服务器搭建个人网站?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  网站制作网站,深圳做网站哪家比较好?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  ,柠檬视频怎样兑换vip?  广东企业建站网站优化与SEO营销核心策略指南  高防服务器租用首荐平台,企业级优惠套餐快速部署  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  ,想在网上投简历,哪几个网站比较好?  如何在企业微信快速生成手机电脑官网?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何用PHP工具快速搭建高效网站?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  微信小程序 input输入框控件详解及实例(多种示例)  已有域名如何快速搭建专属网站?  如何撰写建站申请书?关键要点有哪些?  七夕网站制作视频,七夕大促活动怎么报名?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Java解压缩zip - 解压缩多个文件或文件夹实例  如何彻底删除建站之星生成的Banner?  建站主机无法访问?如何排查域名与服务器问题  宝塔新建站点报错如何解决?  建站之星如何修改网站生成路径?  建站之星与建站宝盒如何选择最佳方案?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。