全网整合营销服务商

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

免费咨询热线: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 


相关文章: 建站之星安装失败:服务器环境不兼容?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  建站之星2.7模板快速切换与批量管理功能操作指南  建站之星展会模版如何一键下载生成?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  行程制作网站有哪些,第三方机票电子行程单怎么开?  网站app免费制作软件,能免费看各大网站视频的手机app?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  建站之星伪静态规则如何正确配置?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  建站之星安装提示数据库无法连接如何解决?  C#怎么创建控制台应用 C# Console App项目创建方法  电商网站制作公司有哪些,1688网是什么意思?  建站主机选择指南:服务器配置与SEO优化实战技巧  电商平台网站制作流程,电商网站如何制作?  建站之星展会模板:智能建站与自助搭建高效解决方案  MySQL查询结果复制到新表的方法(更新、插入)  c# 服务器GC和工作站GC的区别和设置  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  如何快速启动建站代理加盟业务?  制作证书网站有哪些,全国城建培训中心证书查询官网?  如何快速登录WAP自助建站平台?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  宝塔建站后网页无法访问如何解决?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  如何在服务器上配置二级域名建站?  建站之星代理如何获取技术支持?  实现虚拟支付需哪些建站技术支撑?  linux top下的 minerd 木马清除方法  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  表情包在线制作网站免费,表情包怎么弄?  建站之星如何实现PC+手机+微信网站五合一建站?  如何快速查询网址的建站时间与历史轨迹?  韩国服务器如何优化跨境访问实现高效连接?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  简历在线制作网站免费版,如何创建个人简历?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  建站之星备案是否影响网站上线时间?  广东企业建站网站优化与SEO营销核心策略指南  建站之星如何快速更换网站模板?  官网网站制作腾讯审核要多久,联想路由器newifi官网  php json中文编码为null的解决办法  广州营销型建站服务商推荐:技术优势与SEO优化解析  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱? 

您的项目需求

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