0

我有 vps Mem:524 (215used) Swap:524(75used) ,mysql 5.1.61 和三个表。

具有一列“数据”的表“新”包含 100 000 条记录。

记录1

记录2

记录3

具有一列“数据”的表“旧”包含 1 000 000 条记录。

记录1

记录4

记录5

表“结果”也有一列“数据”。

我将表“新”与“旧”表进行比较,并将不在“旧”表中的“结果”记录插入到“结果”表中。在这个例子中,它将是

记录2

记录3

我使用查询

INSERT INTO result 

SELECT data FROM new 

LEFT JOIN old USING (data) 

WHERE old.data IS NULL

我的问题 - 这个查询执行一个多小时甚至更多(我等不及了)。

我想知道这种mysql操作的更快捷的方法。理想 - 10-20 分钟。

4

1 回答 1

1

我认为这个查询会更快:

insert into result
select data 
from new n
where not exists 
(select 1 from old where data = n.data)

data并且对归档newold表(但不在表中)的索引result将显着提高性能。

您可以通过以下方式添加索引:

create index ind1 on old(data)
于 2012-09-22T06:53:37.293 回答