mysql - 合并 2 个表太慢

标签 mysql sql performance

我有 2 个类似的表,其中包含大约 200.000 行。如果表 1 中没有类似数据,我想将表 2 中的数据添加到表 1。我进行了一个查询,显示了我可以复制的 ID。但是执行查询需要一天多的时间,我希望在 +- 2 小时内完成。

这是查询(where中的所有数据都是字符串):

SELECT id
FROM   verwerkt2 v2
WHERE  0 = (SELECT Count(*)
            FROM   verwerkt
            WHERE  naam = v2.naam
                   AND postcode = v2.postcode
                   AND huisnummer = v2.huisnummer);  

我从工具中获取数据。这就是数据未标准化的原因。

有没有更快的方法来做到这一点?

最佳答案

你可以试试

INSERT INTO verwerkt (Naam, Postcode, Huisnummer, ...)
SELECT Naam, Postcode, Huisnummer, ... 
  FROM verwerkt2 v2
 WHERE NOT EXISTS
(
  SELECT *
    FROM verwerkt
   WHERE Naam       = v2.Naam
     AND Postcode   = v2.Postcode 
     AND Huisnummer = v2.Huisnummer        
);

确保您拥有所有必要的索引。特别要确保您在 verwerkt

中有覆盖索引 (Naam, Postcode, Huisnummer)
ALTER TABLE verwerkt ADD KEY (Naam, Postcode, Huisnummer);

关于mysql - 合并 2 个表太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18202829/

相关文章:

java - 在java中使用SqlBuilder创建动态查询

mysql - 如何将数据从一个数据库迁移到另一个具有不同结构的数据库?

mysql - ON DUPLICATE 多次更新

php - 获取特定时间范围和特定条目类型的平均值

php - UNION 2 sql 查询 - wp_posts 与 wp_terms - PHP, WORDPRESS

c++ - 虚拟方法 VS std::function 成员变量在性能方面

c# - 为什么没有以 int 作为指数的 Math.Pow?

javascript - HTML5 Canvas在Chrome上速度较慢,但​​在FireFox上速度较快

php - 更新功能不更新,为什么没有传递 ID?

php - 浏览器不读取解码的 html_entity_decode 文本