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


确保您具有所有必要的索引。特别要确保在(Naam, Postcode, Huisnummer)中具有覆盖索引verwerkt

ALTER TABLE verwerkt ADD KEY (Naam, Postcode, Huisnummer);

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

10-09 23:22