我有vps Mem:524(215used)交换:524(75used),mysql 5.1.61有三个表。
包含一列'数据'的表'new'包含100 000条记录。
record1
record2
RECORD3
带有一列'数据'的表'old'包含1 000 000条记录。
RECORD1
RECORD4
record5
表'结果'也有一列“数据”。
我将表'new'与表'old'进行比较并插入表'result'记录,这些记录不在表'old'中。在这个例子中它将是
RECORD2
RECORD3
我使用查询
INSERT INTO result
SELECT data FROM new
LEFT JOIN old USING (data)
WHERE old.data IS NULL
我的问题 - 此查询执行的时间超过一小时或更多(我不能等待更多)。
我想知道更快速的这种mysql操作方法。理想 - 10-20分钟。
答案 0 :(得分:1)
我认为这个查询会更快:
insert into result
select data
from new n
where not exists
(select 1 from old where data = n.data)
在data
和new
表中提交的old
上的索引(但不在result
表中)
将显着提高性能。
您可以按以下方式添加索引:
create index ind1 on old(data)