MySQL大批量插入資料

2021-09-06 16:06:12 字數 673 閱讀 9788

1. 對於myisam型別的表,可以通過以下方式快速的匯入大量的資料。

alter  table  tblname  disable  keys;

loading  the  data

alter  table  tblname  enable  keys;

這兩個命令用來開啟或者關閉myisam表非唯一索引的更新。在匯入大量的資料到一 個非空的myisam表時,通過設定這兩個命令,可以提高匯入的效率。對於匯入大量 資料到乙個空的myisam表,預設就是先導入資料然後才建立索引的,所以不用進行 設定。

2. 而對於innodb型別的表,這種方式並不能提高匯入資料的效率。對於innodb型別 的表,我們有以下幾種方式可以提高匯入的效率:

a. 因為innodb型別的表是按照主鍵的順序儲存的,所以將匯入的資料按照主鍵的順 序排列,可以有效的提高匯入資料的效率。如果innodb表沒有主鍵,那麼系統會預設建立乙個內部列作為主鍵,所以如果可以給表建立乙個主鍵,將可以利用這個優勢提高 匯入資料的效率。

b. 在匯入資料前執行set  unique_checks=0,關閉唯一性校驗,在匯入結束後執行set  unique_checks=1,恢復唯一性校驗,可以提高匯入的效率。

c. 如果應用使用自動提交的方式,建議在匯入前執行set  autocommit=0,關閉自動 提交,匯入結束後再執行

參考:

mysql大批量資料插入優化

目前在專案中發現一張700萬的表,插入10萬條資料通過mybatis的批量插入大概需要3分鐘左右,耗時太長。現在通過mysql的load data local infile 命令進行優化插入。最後測試10萬條資料批量插入大概在3秒左右的時間。定義命令執行語句 public inte ce fastb...

MySQL插入大批量測試資料

執行sql drop procedure if exists proc initdata 如果存在此儲存過程則刪掉 delimiter create procedure proc initdata begin declare i int default 1 while i 10000000 do 這...

oracle中插入大批量資料

方法一 建立乙個表,並同時新增1000000條資料,create table testtable as select rownum as id,to char sysdate rownum 24 3600,yyyy mm dd hh24 mi ss as inc datetime,trunc dbm...