快速将 200 多个数据插入到具有关系的表中 - Laravel 5.6
Fastly insert 200+ data to the tables with relationship - Laravel 5.6
Table: 职位空缺
id int unsigned 自动递增
code varchar(191) NULL
start_time 时间戳 NULL
end_time 时间戳 NULL
business_unit_id int unsigned
job_id int unsigned
on_date 日期
break int NULL
shift_id int unsigned
total_numbers 整数
Table: vacancy_details
id int unsigned 自动递增
vacancy_id int unsigned
day_id int unsigned
shift_id int unsigned
rate_type 枚举('flat_rate','hourly_rate') [hourly_rate]
start_time 时间戳 NULL
end_time 时间戳 NULL
break int NULL
total_hours 十进制(10,2) NULL
client_rate 十进制(8,2) NULL
Table: vacancy_staff_rates
id int unsigned 自动递增
vacancy_id int unsigned
vacancy_detail_id int unsigned NULL
employment_type_id int unsigned
staff_rate 十进制(8,2) NULL
public function store_multiple($subdomain, Request $request){
if($request){
$payloads = $request->data;
foreach($payloads as $payload){
$payload = (object) $payload;
//insertion(3 tables) and all the calculations and logic are doing in this add_vacancy()
$vacancy = Vacancy::add_vacancy($payload);
}
}
}
这是 3 个表格。当我添加 10 或 20 时,插入速度很快,但添加 100 或更多时需要更多时间。任何人都可以建议一种方法吗?
建议:
将 200 行收集到单独的 table(可能是 TEMPORARY
table)。然后在此 table 中根据需要调整值。一些(全部?)按摩可以批量完成;也就是说,同时显示所有 200 行。如果您需要“规范化”(将一些字符串转换为 ID),现在正是这样做的好时机。
然后,最后一步 INSERT INTO real SELECT ... FROM temp
将它们放在它们所属的位置。
Table: 职位空缺
id int unsigned 自动递增
code varchar(191) NULL
start_time 时间戳 NULL
end_time 时间戳 NULL
business_unit_id int unsigned
job_id int unsigned
on_date 日期
break int NULL
shift_id int unsigned
total_numbers 整数
Table: vacancy_details
id int unsigned 自动递增
vacancy_id int unsigned
day_id int unsigned
shift_id int unsigned
rate_type 枚举('flat_rate','hourly_rate') [hourly_rate]
start_time 时间戳 NULL
end_time 时间戳 NULL
break int NULL
total_hours 十进制(10,2) NULL
client_rate 十进制(8,2) NULL
Table: vacancy_staff_rates
id int unsigned 自动递增
vacancy_id int unsigned
vacancy_detail_id int unsigned NULL
employment_type_id int unsigned
staff_rate 十进制(8,2) NULL
public function store_multiple($subdomain, Request $request){
if($request){
$payloads = $request->data;
foreach($payloads as $payload){
$payload = (object) $payload;
//insertion(3 tables) and all the calculations and logic are doing in this add_vacancy()
$vacancy = Vacancy::add_vacancy($payload);
}
}
}
这是 3 个表格。当我添加 10 或 20 时,插入速度很快,但添加 100 或更多时需要更多时间。任何人都可以建议一种方法吗?
建议:
将 200 行收集到单独的 table(可能是 TEMPORARY
table)。然后在此 table 中根据需要调整值。一些(全部?)按摩可以批量完成;也就是说,同时显示所有 200 行。如果您需要“规范化”(将一些字符串转换为 ID),现在正是这样做的好时机。
然后,最后一步 INSERT INTO real SELECT ... FROM temp
将它们放在它们所属的位置。