akh*_*nda 1 php mysql optimization codeigniter
我正在通过以下方式将数据插入数据库:
控制器:
foreach($cData as $data){
$ins['name'] = $data['name'];
$bonus = $this->calBonus($data['bonus']); //calculates bonus.
$ins['bonus'] = $bonus;
//similarly there are few more data which are assigned to the $ins array;
$res = $this->myModel->insertData($ins); // for inserting data;
}
Run Code Online (Sandbox Code Playgroud)
模型:
function insertData($ins){
$res = $this->db->insert('bonus',$ins);
if($res){
return 1;
}
else{
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
我有300000数据$cdata.对于一个数据插入它正在采取100 milliseconds.因此,完全插入需要8个多小时.
现在如何优化这种插入?有没有更好的方法来做到这一点?
使用批量插入功能
$mainArray = array();
foreach($cData as $data){
$ins['name'] = $data['name'];
$bonus = $this->calBonus($data['bonus']); //calculates bonus.
$ins['bonus'] = $bonus;
// push array in main array
array_push($mainArray,$ins);
}
if($mainArray != array()){
$this->db->insert_batch('YOUR_TABLE_NAME', $mainArray)
}
Run Code Online (Sandbox Code Playgroud)
参考:这里