我有3个表用户,产品和 temp_table 。我已将具有1,00,000条记录的xlsx文件导入到 temp_table 。现在,我必须将这些记录插入产品表中。在这里,我还必须将 users 表中的user_id保存到 products 表中。 注意:user_id是动态的(即,在xlsx文件中有一个名为email的列,我已经为其电子邮件创建了一个新用户)。因此在产品表中,将动态插入user_id。 我已经在下面的查询中使用过,但是这花费了太多时间。有时我的MySQL被锁定。
INSERT INTO products
(user_id,
brand_id,
points_discount,
amount,
sub_total,
added_on)
SELECT users.user_id,
brand_id,
discount,
amount,
sub_total,
added_on
FROM temp_table
INNER JOIN users
ON email = users.email;
请帮助我解决这个问题。
答案 0 :(得分:1)
在email
和temp_table
表的users
列上创建索引。
同时确保两列都具有相同的datatype
ALTER TABLE temp_table ADD KEY `idx_email` (`email`);
ALTER TABLE users ADD KEY `idx_email` (`email`);
答案 1 :(得分:0)
为此,我将创建一个artisan command,该查询会从temp_table
查询给定数量的记录(在其中添加带有布尔值的processed
标志/列),您可以安排它每分钟运行一次,也可以自己在终端上运行。像查询10000-20000个条目/运行(可能更多,取决于服务器和环境)并对其进行处理。