程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql 批量更新數據的技巧

mysql 批量更新數據的技巧

編輯:MySQL綜合教程

    當在開發的時候有時候需要手動修復數據或者更新數據,一般在自己的項目裡寫一個main函數對數據讀取或者修改即可,但執行的時候要從本地連接外網,

如果數據量很大的時候。幾十萬或者上百萬等以上的話,性能會非常的差,這時候把sql語句寫好放在數據庫裡直接執行會好很多。

   在mysql數據庫裡的innodb引擎,一般數據增刪改都有內置的事務的,而且有默認的超時限制,好像是50s,如果數據量大而且很多連接查詢的話會超時, 

   這時候不妨把連接查詢的數據創建臨時表並對臨時表創建索引,然後添加數據或修改數據對臨時表進行連接關聯,這時候性能會快很多,舉個例子:

 DROP TEMPORARY TABLE IF EXISTS tmp;

 CREATE TEMPORARY TABLE tmp
    select b.UserId,b.field1,b.field2, b.field3 from
                    (select Max(AutoId) as AutoId
                    from T_Table2  where UserId
                    group by UserId) a left join T_Table1 b on a.AutoId=b.AutoId;
 ALTER TABLE tmp ADD INDEX `index_UserId` (`UserID` ASC) ;

  INSERT INTO T_Table3(`UserId`,`field1`,`field2`,`field3`, `CreateTime`,`CreateIp`,`ModifyTime`,`ModifyIp`)
    select a.UserId,a.field1,a.field2,a.field3,now(),'127.0.0.1',now(),'127.0.0.1'
    from tmp;

    臨時表用完之後要刪除,DROP TEMPORARY TABLE tmp;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved