如何使用Codeigniter减少数据的插入时间?

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个多小时.

现在如何优化这种插入?有没有更好的方法来做到这一点?

Nai*_*lek 5

使用批量插入功能

$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)

参考:这里