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

时间:2017-12-13 07:35:11

标签: php mysql codeigniter optimization

我按以下方式将数据插入数据库:

控制器:

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;

}

型号:

function insertData($ins){
    $res = $this->db->insert('bonus',$ins);
    if($res){
        return 1;
    }
    else{
        return 0;
    }
} 

我在300000中有$cdata个数据。对于一次数据插入,它需要100 milliseconds。因此,完全插入需要8个多小时。

现在如何优化此插入?有没有更好的方法呢?

1 个答案:

答案 0 :(得分: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)
}

参考:Here