我有如下循环,它的运行超过6000条记录,
foreach ($csv as $value) {
$research = ResearchData::create(array('company_id' => Input::get('company'), 'date' => Input::get('date')));
}
在这里我使用了2个值company_id和date。 我想知道从跟随代码
中使用此方法的最佳方法是什么1 ................ ....................
$company_id=Input::get('company_id');
$date=Input::get('date');
foreach($csv as value){
$research=ResearchData::create(array('company_id'=>$company_id,'date'=>$date));
}
..................... 2 ...................
foreach ($csv as $value) {
$research = ResearchData::create(array('company_id' => Input::get('company'), 'date' => Input::get('date')));
}
答案 0 :(得分:2)
从性能的角度来看,数字1会更快,但只是因为Input::get
需要更长的时间,因为它会进行一些检查,数组连接并最终从数组中获取内容。这将花费完全可以忽略的时间,但是选项1执行此操作一次,而选项2将在循环的每次迭代中执行此操作
从任何其他角度来看(代码清晰度,文档等),它完全基于意见。
答案 1 :(得分:0)
您可以进行批量插入。我没有进行性能检查,但我希望性能更好。检查以下内容:
$company_id=Input::get('company_id');
$date=Input::get('date');
$data = array_fill(0, count($csv) - 1, ['company_id' => $company_id, 'date' => $date]); // skip the large foreach
ResearchData::insert(array_values($data)); // skip the numeric keys
文档: