mysql - 两个mysql表的比较操作执行时间太长

标签 mysql

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

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

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

create index ind1 on old(data)

关于mysql - 两个mysql表的比较操作执行时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12541416/

相关文章:

mysql - 在逗号分隔字段上查询多个值

mysql - 在一个查询中获取所有国家的州和城市

php - 表中有超过 20 万行,脚本加载时间超过 20 秒

mysql - 按接收者姓名以外的不同用户名分组

mysql - 如何一次插入和更新多个值

php - pdo mysql时间戳过滤器被忽略

php - 包含任何数据的 MySQL Count 字段

c# - MySql 命令 : no rows returned

PHP MySQL 绑定(bind)语句情况

java - MySql 中包含逗号的 CSV 数据插入失败