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优化实战指南:核心词挖掘与长尾流量提升策略
如何高效完成自助建站业务培训?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何在腾讯云服务器快速搭建个人网站?
如何在服务器上配置二级域名建站?
如何批量查询域名的建站时间记录?
广州美橙建站如何快速搭建多端合一网站?
如何高效生成建站之星成品网站源码?
网站网页制作专业公司,怎样制作自己的网页?
小型网站制作HTML,*游戏网站怎么搭建?
做企业网站制作流程,企业网站制作基本流程有哪些?
网站制作说明怎么写,简述网页设计的流程并说明原因?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何通过商城免费建站系统源码自定义网站主题?
如何在云主机上快速搭建多站点网站?
北京网站制作公司哪家好一点,北京租房网站有哪些?
北京网站制作网页,网站升级改版需要多久?
广州营销型建站服务商推荐:技术优势与SEO优化解析
定制建站方案优化指南:企业官网开发与建站费用解析
建站168自助建站系统:快速模板定制与SEO优化指南
沈阳制作网站公司排名,沈阳装饰协会官方网站?
如何在云虚拟主机上快速搭建个人网站?
如何用IIS7快速搭建并优化网站站点?
如何在IIS中新建站点并解决端口绑定冲突?
专业网站建设制作报价,网页设计制作要考什么证?
制作网站的软件免费下载,免费制作app哪个平台好?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
如何用美橙互联一键搭建多站合一网站?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
C++时间戳转换成日期时间的步骤和示例代码
建站之星备案是否影响网站上线时间?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
网站制作报价单模板图片,小松挖机官方网站报价?
想学网站制作怎么学,建立一个网站要花费多少?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
如何配置支付宝与微信支付功能?
如何快速生成专业多端适配建站电话?
如何通过PHP快速构建高效问答网站功能?
如何获取上海专业网站定制建站电话?
建站之星安装需要哪些步骤及注意事项?
如何快速启动建站代理加盟业务?
网站制作模板下载什么软件,ppt模板免费下载网站?
,石家庄四十八中学官网?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
5种Android数据存储方式汇总
网站微信制作软件,如何制作微信链接?
高端云建站费用究竟需要多少预算?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
*请认真填写需求信息,我们会在24小时内与您取得联系。