<?php//連線資料庫
header('content-type:text/html;charset=utf-8');
define('db_host','127.0.0.1');
define('db_user','root');
define('db_pass','root');
define('db_name','test');
define('db_port',3306);
define('db_char','utf8');
$sqli = new mysqli( db_host, db_user, db_pass, db_name,db_port);
$sqli->query( "set names ".db_char );
ini_set("max_execution_time", "30");/**
* 批量新增 方法1
* 使用insert into迴圈遍歷新增 */
for ( $i = 0; $i
<2000000; $i++)/**
* 批量新增 方法2
* 使用事務提交,批量插入資料庫(每隔10w條提交下) */
$sqli->query( 'start transaction');
for( $i=0;$i
<=2000000;$i++)
}$sqli->query('commit transaction');/**
* 批量新增 方法3
* 使用優化sql語句,將sql語句拼接使用 insert into table() values(),(),()然後一次性新增; */
ini_set("max_execution_time", "200000");
echo
$time_s = date("h:i:s",time())."
";$sql = "insert into test_md5(`data`,`md5_data`) values ";
for ( $i = 1 ; $i
<2000000; $i++)
$sql = substr( $sql,0, strlen($sql)-1);
//echo $sql;die();
$sqli->query( $sql
);echo
$time_e = date("h:i:s",time())."
";//
15:45:38
// 15:46:09
// 不到一分鐘執行完畢
注意1:php的**執行時間
max_execution_time = 200000
2:php每一次執行請求的記憶體空間
memory_limit = 1g
3:mysql接收的最大資料報
max_allowed_packet = 1g
最後總結下,在插入大批量資料時,
第一種方法無疑是最差勁的,
第二種方法在實際應用中就比較廣泛,
第三種方法在插入測試資料或者其他低要求時比較合適,速度確實快。
Sqlite批量新增資料
今天遇到了往sqlite資料庫裡插入1400多條資料的情況,結果每次都需要一兩分鐘才能完成.搜尋了一下,在這裡找到了解決辦法,所需要的時間直接變成不到2秒 internal static void fastinsertmany dbconnection cnn dbtrans.commit catc...
php批量新增資料與批量更新資料的實現方法
php如果要批量儲存資料我們只要使用sql的insert into語句就可能實現資料批量儲存了,如果是更新資料使用update set就可以完成更新了,操作方法都非常的簡單,下面整理兩個例子.批量資料錄入 設計方法 同時提交多條表單記錄,為每一條記錄設定相同的文字網域名稱稱,然後在表單處理頁中,通過...
大批量新增資料
這篇文章主要介紹了php大批量插入資料庫的3種方法和速度對比,3種方法分別使用普通insert語句 insert into語句和事務提交,需要的朋友可以參考下 第一種方法 使用insert into 插入,如下 params array value 50 set time limit 0 echo ...