我有 vps Mem:524 (215used) Swap:524(75used) ,mysql 5.1.61 和三个表。
具有一列“数据”的表"new"包含 100 000 条记录。
record1
record2
record3
具有一列“数据”的表“旧”包含 1 000 000 条记录。
record1
record4
record5
表“结果”也包含一列“数据”。
我将表"new"与表“旧”进行比较,并将不在表“旧”中的记录插入到表“结果”中。在此示例中,它将是
record2
record3
我使用查询
INSERT INTO result
SELECT data FROM new
LEFT JOIN old USING (data)
WHERE old.data IS NULL
我的问题 - 该查询执行了一个多小时甚至更多(我不能再等了)。
我想知道更快速的mysql操作方法。理想 - 10-20 分钟。
最佳答案
我认为这个查询会更快:
insert into result
select data
from new n
where not exists
(select 1 from old where data = n.data)
以及在new
和old
表中归档的data
索引(但不在result
表中)
将显着提高性能。
您可以通过以下方式添加索引:
create index ind1 on old(data)
关于mysql - 两个mysql表的比较操作执行时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12541416/