我有一个超过 360.000 行的文件,每一行都是一个 JSON。
我将 Json 读取到 Php 变量中并将其插入到两个表中
“电影”和“movies_details”
我正在使用 Laravel 5.4。 我的问题是性能。 所以我可以用这段代码在一分钟内插入大约 35-40 行
$idMovie = DB::table('movies')
->insertGetId([
'moviedb_id' => $id,
'adult' => $adult,
'created_at' => $dateTime,
]);
DB::table('movies_title')
->insert([
'movie_id' => $idMovie,
'original_title' => $original_title,
'created_at' => $dateTime,
]);
但我想任何人都知道插入它的更快更好的方法。
感谢您的宝贵时间。
最佳答案
假设您可以为您的变量分配一个数组,您可以使用多个插入(批量插入)
像在平面 sql 中一样
insert into your_table (moviedb_id, adult, created_at)
values ($id[0], $adult[0], $dateTime[0]),
($id[1], $adult[1], $dateTime[1]),
......
......
($id[n], $adult[n], $dateTime[n])
通过这种方式,每次插入都可以插入更多行,而不是每分钟插入 30 - 40 行,你可以插入 30*n - 40*n 行
因此请检查您的 ORM 或框架查询管理器是否具有等效功能
关于Php 文件内容到多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47291160/