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小时内与您取得联系。