麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

MySql批量插入優(yōu)化Sql執(zhí)行效率實(shí)例詳解

2024-07-24 13:13:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

MySql批量插入優(yōu)化Sql執(zhí)行效率實(shí)例詳解

itemcontractprice數(shù)量1萬(wàn)左右,每條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,'外幣匯率調(diào)整,重新計(jì)算人民幣底價(jià)','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,'外幣匯率調(diào)整,重新計(jì)算人民幣底價(jià)','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,'外幣匯率調(diào)整,重新計(jì)算人民幣底價(jià)','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,'外幣匯率調(diào)整,重新計(jì)算人民幣底價(jià)','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,'外幣匯率調(diào)整,重新計(jì)算人民幣底價(jià)','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("底價(jià)更新和日志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("底價(jià)更新影響行數(shù):{0}", effctRows); 

正常情況下大概20秒鐘就ok.

之前是用EF操作,查詢(xún)出來(lái) ,要耗時(shí),然后再組裝 update語(yǔ)句 ,然后再插入日志(每條數(shù)據(jù)5條日志),這個(gè)網(wǎng)絡(luò)交互的時(shí)間加上數(shù)據(jù)庫(kù)連接打開(kāi)關(guān)閉的時(shí)間,總的執(zhí)行時(shí)間,大概10多分鐘。

用sql語(yǔ)句批量操作,可以說(shuō)效率提升了 40倍,就是大量數(shù)據(jù)的傳輸和數(shù)據(jù)庫(kù)的處理次數(shù)耗時(shí)。

所以說(shuō),軟件開(kāi)發(fā)不是開(kāi)發(fā)完成就行,而是要解決性能上的問(wèn)題,這才是開(kāi)發(fā)的進(jìn)階。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到MYSQL教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: v11av在线播放| 奶子吧naiziba.cc免费午夜片在线观看 | 第一区免费在线观看 | 亚洲欧美在线视频免费 | 久久国产亚洲精品 | 精品一区二区三区日本 | 国产成年人视频 | 男女隐私免费视频 | h视频免费观看 | 伦一区二区三区中文字幕v亚洲 | 中国字幕av | 韩国一级免费视频 | 免费在线观看国产精品 | 午夜精品久久久久久中宇 | 一本一本久久a久久精品综合小说 | 依人九九宗合九九九 | 国产精品啪一品二区三区粉嫩 | 一级做a爱片毛片免费 | 毛片成人网| 369看片你懂的小视频在线观看 | 99ri在线 | 国产1区2区3区中文字幕 | 亚洲第一成人在线视频 | 成人福利在线 | 91麻豆精品国产91久久久无需广告 | chinese hd xxxx tube | 久久久久久片 | 成人毛片视频在线观看 | 国产 日韩 亚洲 欧美 | 亚洲第一视频在线 | 91九色视频在线播放 | 精品国产一区在线观看 | 欧美一区在线观看视频 | 亚洲成人精品一区二区 | 性片网站 | 超久久| 伊人99re| 色屁屁xxxxⅹ免费视频 | av性色全交蜜桃成熟时 | 狠狠干91 | 美女在线视频一区二区 |