我正在尝试使用 SQL 查找 2 个表之间的所有不匹配行。
表 codes
包含 600 万个条目,表 burnt
包含 100 万个条目。
我尝试过使用 INSERT INTO SELECT
,但这不起作用,过了一会儿就崩溃了。
INSERT INTO unburnt
SELECT
*
FROM
codes T2
WHERE
NOT EXISTS (SELECT *
FROM
burnt T1
WHERE
T1.code = T2.code)
任何不匹配的行都应放入unburnt
表中。
处理此查询的最佳方法是什么?
所有 3 个表的数据库表结构均相同。
代码
- ID
- 代码(文本)
烧焦
- ID
- 代码(文本)
未燃烧
- ID
- 代码(文本)
最佳答案
尝试将 INSERT 分解为一组较小的 INSERT:
INSERT INTO unburnt SELECT * .... WHERE T1.code = T2.code and T2.ID between 1 and 100000)
INSERT INTO unburnt SELECT * .... WHERE T1.code = T2.code and T2.ID between 100001 and 200000)
etc.
关于mysql - 使用sql查找表之间不匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35321769/