function batchInsert($table, $keys, $values, $type = 'INSERT'){
$tempArray = array();
foreach($values as $value){
$tempArray[] = implode('\', \'', $value);
}
return $type.' INTO `'.$table.'` (`'.implode('`, `', $keys).'`) VALUES (\''.implode('), (', $tempArray).'\')';
}
$splitNum = 5;
$data = array(
array('王朝', '20'),
array('马汉', '20'),
array('张龙', '20'),
array('赵虎', '20'),
array('展护卫', '20'),
array('包大人', '20'),
array('王媳妇', '20'),
);
foreach(array_chunk($data, $splitNum) as $values){
echo batchInsert('table', array('name', 'age'), $values);
echo '<br>';
}
你可以适当调整
$splitNum
的大小,比如调整为
50、100、500
,只要你的
内存、bulk_insert_buffer_size
、
max_allowed_packet
足够大,这点数值也可以调整为
1000
,这样,就是
1000
条记录分为1次提交到数据库,
SQL插入速度
立马杠杠上升的!