我正在从一个表到另一个表进行插入查询。 查询如下:
INSERT INTO analytics_user (brokerage_id, email, first_name, last_name, landing_page_source, sign_up_time, user_id)
SELECT brokerage_id, email, first_name, last_name, landing_page_source, sign_up_time, user_id
FROM user
WHERE user_id NOT IN
(SELECT user_id FROM analytics_user);
我在用户表中有大约1M的记录,有更好的方法吗?因为它需要很长时间才能完成,比如超过 20 分钟,或者它只是卡住,我必须重新启动服务器。
更新:
显示来自analytics_user的索引
analytics_user 0 PRIMARY 1 id A 10687 NULL NULL BTREE
analytics_user 0 brokerage_id 1 brokerage_id A 10687 NULL NULL BTREE
analytics_user 0 user_id 1 user_id A 10687 NULL NULL BTREE
最佳答案
尝试这样可能会对你有帮助
INSERT INTO analytics_user
(brokerage_id, email, first_name, last_name, landing_page_source, sign_up_time, user_id)
(
SELECT
brokerage_id, email, first_name, last_name, landing_page_source, sign_up_time,
user_id
FROM user A
Left join analytics_user b on A.User_Id=B.User_Id
where B.User_Id is null)
关于mysql - INSERT FROM other table 如果记录不存在需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19794735/