比较两个表的差异需要很长时间

4xrmg8kj  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(398)

我有2个表,每个表有900k条记录,需要检查其中一个表是否缺少一些记录。我尝试了许多网上的建议,包括:

SELECT tableB.ColumnOfInterest, tableB.City, tableB.Province 
FROM tableB 
WHERE tableB.ColumnOfInterest NOT IN (SELECT TableA.ColumnOfInterest 
                                      FROM TableA)

然而,这个问题似乎悬而未决。5分钟后,它仍在查询。
有没有办法更快地完成比较/差异检测?

qlfbtfca

qlfbtfca1#

如前所述,使用not in和left join+not null的解决方案之间没有明显的区别。您的主要问题可能是缺少以下索引:

Create index ix_tb_col on tableB(ColumnOfInterest)

Create index ix_ta_col on tableA(ColumnOfInterest)
wz1wpwve

wz1wpwve2#

使用左连接而不是“not in”子查询来提高性能

SELECT a.ColumnOfInterest , a.City, a.Province 
    FROM tableB a
    left join TableA b on a.ColumnOfInterest =b.ColumnOfInterest 
    where b.ColumnOfInterest is null
fdbelqdn

fdbelqdn3#

使用 not exists 相反

SELECT ColumnName, City, Province 
FROM tableB b
WHERE NOT EXISTS (SELECT 1 FROM TableA WHERE ColumnName = b.ColumnName);

但是,这需要索引 tableB(ColumnName) / TableA(ColumnName)

相关问题