需要从多个表中插入具有动态用户ID的产品表

时间:2019-03-01 09:55:43

标签: php mysql laravel laravel-5

我有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;

请帮助我解决这个问题。

2 个答案:

答案 0 :(得分:1)

emailtemp_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个条目/运行(可能更多,取决于服务器和环境)并对其进行处理。