按時間增量匯入 MySQL快速大量匯入

2021-10-14 18:06:47 字數 992 閱讀 6770

在理想的情況下,希望使用單個鏈結,進行多行的資料。

插入需要的時間由以下幾個因素決定,數字表示大概佔比:

連線向伺服器傳送查詢

解析查詢

插入行【1 * 行大小】

插入索引【1 * 索引數】

關閉如果要將資料新增到非空表,則可以增大 bulk_insert_buffer_size 變數以使資料插入更快。

可以使用下面的方式,提高插入速度

set autocommit=0;

... sql import statements ...

commit;

set autocommit=1;

set unique_checks=0;

... sql import statements ...

set unique_checks=1;

對於大表,這可以節省大量磁碟i/o,因為 innodb可以使用將change buffer批量寫入輔助索引中。但需要確保資料不包含重複的鍵值。
set foreign_key_checks=0;

... sql import statements ...

set foreign_key_checks=1;

對於大表,這可以節省大量磁碟i/o
insert  into yourtable values  (1,2),  (5,5),  ...;
參考:15.6.1.6 auto_increment handling in innodb

在批量匯入完資料後再建立全文索引

參考:

MySQL按時間分組

select from unixtime time y m d as time from 表名 where 1 group by time 如果需要詳細資訊,再遍歷時間獲取 類似這種形式 這個是我在工作中的乙個頁面展示 from unixtime的語法 from unixtime unix time...

mysql時間查詢 MySQL按時間查詢

mysql 今天select from 表名 where to days 時間欄位名 to days now 昨天select from 表名 where to days now to days 時間欄位名 1 近7天select from 表名 where date sub curdate int...

mysql按時間獲取資料

獲取今年所有資料 select from my date where year date f year curdate 獲取去年所有資料 select from my date where year date f year date sub curdate interval 1 year 獲取本季度...