我有一个像下面这样的循环,它运行了超过6000条记录,
foreach ($csv as $value) {
$research = ResearchData::create(array('company_id' => Input::get('company'), 'date' => Input::get('date')));
}
在这里我使用了两个值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')));
}
从性能的角度来看,第1号会更快,但这只是因为Input::get
会花费一点点时间,因为它会进行一些检查,数组连接并最终从数组中获取一些东西。这将花费完全可以忽略不计的时间,但是选项1只做一次,而选项2将为循环
从其他角度来看(代码清晰度,文档等),这完全是基于意见。
可以进行批量插入。我没有做性能检查,但我希望有更好的表现。检查以下:
$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
文档:
- http://php.net/array_filter
- http://laravel.com/docs/4.2/queries插入