【发布时间】:2016-02-10 17:19:34
【问题描述】:
我正在尝试使用 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 个表的数据库表结构相同。
代码
- 身份证
- 代码(文本)
烧毁
- 身份证
- 代码(文本)
未燃烧
- 身份证
- 代码(文本)
【问题讨论】:
-
能否发一下相关的表结构(
create table code)? -
@SubrataDeyPappu 我已经编辑了问题以包含表格结构
-
左连接代码烧毁
union左连接烧毁代码,因为mysql不支持完全外连接。 -
你有什么索引?
-
试试这个方法:
INSERT INTO unburnt select a.id, a.text from codes a LEFT JOIN burnt b on a.id = b.id WHERE b.id IS NULL
标签: mysql sql select sql-insert