亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2017年04月27日 09:38:39   投稿:lqh  
這篇文章主要介紹了MySql批量插入優(yōu)化Sql執(zhí)行效率實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下

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

itemcontractprice數(shù)量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,'外幣匯率調(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操作,查詢出來 ,要耗時(shí),然后再組裝 update語(yǔ)句 ,然后再插入日志(每條數(shù)據(jù)5條日志),這個(gè)網(wǎng)絡(luò)交互的時(shí)間加上數(shù)據(jù)庫(kù)連接打開關(guān)閉的時(shí)間,總的執(zhí)行時(shí)間,大概10多分鐘。

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

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

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

相關(guān)文章

  • MySQL數(shù)據(jù)庫(kù)升級(jí)的一些

    MySQL數(shù)據(jù)庫(kù)升級(jí)的一些"陷阱"

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)升級(jí)需要注意的地方,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • 詳解MySQL中UNION的用法

    詳解MySQL中UNION的用法

    這篇文章主要介紹了詳解MySQL中UNION的用法,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • mysql自動(dòng)備份多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)

    mysql自動(dòng)備份多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)

    本文主要介紹了mysql自動(dòng)備份多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • MySQL前綴索引導(dǎo)致的慢查詢分析總結(jié)

    MySQL前綴索引導(dǎo)致的慢查詢分析總結(jié)

    前綴索引,并不是一個(gè)萬能藥,他的確可以幫助我們對(duì)一個(gè)寫過長(zhǎng)的字段上建立索引。但也會(huì)導(dǎo)致排序(order by ,group by)查詢上都是無法使用前綴索引的
    2013-05-05
  • 一文搞定MySQL binlog/redolog/undolog區(qū)別

    一文搞定MySQL binlog/redolog/undolog區(qū)別

    這篇文章主要介紹了一文搞定MySQL binlog/redolog/undolog區(qū)別,作為開發(fā),我們重點(diǎn)需要關(guān)注的是二進(jìn)制日志(binlog)和事務(wù)日志(包括redo log和undo log),本文接下來會(huì)詳細(xì)介紹這三種日志,需要的朋友可以參考下
    2023-04-04
  • SQL使用聚集函數(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)匯總

    SQL使用聚集函數(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)匯總

    這篇文章主要介紹了SQL使用聚集函數(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)匯總,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • MySQL插入數(shù)據(jù)insert?ignore語(yǔ)法重復(fù)數(shù)據(jù)自動(dòng)忽略

    MySQL插入數(shù)據(jù)insert?ignore語(yǔ)法重復(fù)數(shù)據(jù)自動(dòng)忽略

    這篇文章主要給大家介紹了關(guān)于MySQL插入數(shù)據(jù)insert?ignore語(yǔ)法重復(fù)數(shù)據(jù)自動(dòng)忽略的相關(guān)資料,最近工作中使用到了insert ignore into語(yǔ)法,感覺這個(gè)語(yǔ)法還是挺有用的,就記錄下來做個(gè)總結(jié),需要的朋友可以參考下
    2023-08-08
  • MySQL安全刪除binlog日志的詳細(xì)步驟

    MySQL安全刪除binlog日志的詳細(xì)步驟

    如果你的?Mysql?搭建了主從同步,或者數(shù)據(jù)庫(kù)開啟了log-bin日志,那么隨著時(shí)間的推移,你的數(shù)據(jù)庫(kù)data目錄下會(huì)產(chǎn)生大量的日志文件,下面這篇文章主要給大家介紹了關(guān)于MySQL安全刪除binlog日志的詳細(xì)步驟,需要的朋友可以參考下
    2024-02-02
  • MySQL數(shù)據(jù)庫(kù)實(shí)驗(yàn)實(shí)現(xiàn)簡(jiǎn)單數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)

    MySQL數(shù)據(jù)庫(kù)實(shí)驗(yàn)實(shí)現(xiàn)簡(jiǎn)單數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)實(shí)驗(yàn)實(shí)現(xiàn)簡(jiǎn)單數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì),文章通過理解并能運(yùn)用數(shù)據(jù)庫(kù)設(shè)計(jì)的常見步驟來設(shè)計(jì)滿足給定需求的概念模和關(guān)系數(shù)據(jù)模型展開詳情,需要的朋友可以參考一下
    2022-06-06
  • mysql高效查詢left join和group by(加索引)

    mysql高效查詢left join和group by(加索引)

    這篇文章主要給大家介紹了關(guān)于mysql高效查詢left join和group by,這個(gè)的前提是加了索引,以及如何在MySQL高效的join3個(gè)表 的相關(guān)資料,需要的朋友可以參考下
    2021-06-06

最新評(píng)論