2017-12-13 10 views
1

私は、次の方法でデータベースにデータを挿入しています: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; 

} 

モデル:

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

私は$cdata300000データを持っています。 1つのデータを挿入する場合は、100 millisecondsとなります。したがって、完全に挿入するには8時間以上かかります。この挿入を最適化する方法を今すぐ

?これを行うための良い方法はありますか?

+0

CSVファイルまたは何を解析していますか? –

+0

トランザクション内のすべてをラップします。より速く実行されます。 CodeIgniterのDBライブラリの代わりにPHPのmysqli関数を使用すると、実行時間も短縮される可能性があります。 –

+0

@DanyalSandeeloいやないCSV、$ CDATAでは、データベースからデータを取得します。 –

答えて

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

Refrence:Here

+0

それは働いて、競争のアレイは3秒で挿入されました。ありがとう。 –

+0

喜んで助けてください:) –

+1

私の悪い、5kのレコードは3秒で挿入されている通常の挿入よりはるかに良いです。 –

関連する問題