我具有导入大约500万条大量记录的功能。
在导入过程中,我还必须同时为相关表创建条目。
我必须对新条目进行束插入查询,并处理所有查询,并分块进行处理。
还有哪些其他方法可以加快这一过程?
答案 0 :(得分:3)
(从laracasts复制) 这可能也会有所帮助:
DB::connection()->disableQueryLog();
“默认情况下,Laravel将为当前请求运行的所有查询保留在日志中。但是,在某些情况下,例如插入大量行时,这可能导致应用程序使用过多的内存。”
答案 1 :(得分:1)
对于那些不想单独浏览所有评论的人来说,请总结一下:
除了已经提出的要点之外,您还可以考虑:
答案 2 :(得分:0)
使用:
块中的过程数据 使用Laravel队列
使用https://docs.laravel-excel.com/3.1/imports/ 用户模型绑定示例
namespace App\Imports;
use App\User;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\Importable;
class UsersImport implements ToModel
{
use Importable;
public function model(array $row)
{
return new User([
'name' => $row[0],
'email' => $row[1],
'password' => Hash::make($row[2]),
]);
}
}
在控制器中
(new UsersImport)->import('users.xlsx', 'local', \Maatwebsite\Excel\Excel::XLSX);