CI 批量插入数据的优化算法
$sub_form = array(); $loop = 0; $ins_loop = 0; $sum = count($form_datas); $this->logger->info('insert data total:'.$sum); //使用事物批量导入有助于提高插入效率 $callStartTime = microtime(true); $this->db->trans_start(); foreach ( $form_datas as $item ) { $loop ++; $sub_form[] = $item; if(($loop % 200) == 0 || $loop == $sum){ $this->logger->info('insert data num:'.$loop); $res = $this->kb_object_instance_mdl->insert_batch($sub_form,$obj_id); $ins_loop ++; unset($sub_form); if(($ins_loop % 5) == 0){ $this->logger->info('insert data trans_complete ins_loop:'.$ins_loop); $this->db->trans_complete(); if($loop != $sum){ $this->db->trans_start(); } } } } //$this->db->trans_complete(); $callEndTime = microtime(true); $callTime = $callEndTime - $callStartTime; $this->logger->info('insert data use time:'.sprintf('%.4f',$callTime)); if($this->db->trans_status() === TRUE){ $this->_show_msg('1',array('data'=>'import ok')); }else{ $this->_show_error('saveOrUpdate error'); }