我正在尝试运行检查以查看表 A 中的 4 列是否与表 B 中的 4 列相同,然后测试两者中第 5 列中的值是否相同。(对于 20,000-40,000) 每个表中的记录。
我尝试在访问中执行此操作,但它似乎挂起了,我可以理解为什么考虑到数据集非常大。
我尝试在有问题的 4 列上连接,并尝试连接每列中的 4 列并比较连接。问题是它既挂起又不返回结果。
任何人都可以就解决这个问题的正确/更好的方法提供建议吗?
我唯一能想到的是先对数据进行排序,但这可能会很慢,我不知道 Select 查询是否提前退出。提前谢谢你。
太慢 1
SELECT TableA.ColA, TableA.ColB, TableA.ColC, TableA.ColD, TableA.ColE, TableB.ColA, TableB.ColB, TableB.ColC, TableB.ColD, TableB.CoLE
FROM TableA INNER JOIN Table B ON(TableA.ColA = TableB.ColA, TableA.ColB =TableB.ColB, TableA.ColC = TableB.ColC, TableA.ColD = TableB.ColD)
太慢 2
SELECT DISTINCT TableA.ColA & TableA.ColB & TableA.ColC & TableA.ColD AS C1, TableB.ColA, TableB.ColB, TableB.ColC, TableB.ColD AS C2,
TableA.ColA, TableA.ColB, TableA.ColC, TableA.ColD, TableA.ColE, TableB.ColA, TableB.ColB, TableB.ColC, TableB.ColD, TableB.ColE
FROM TableA, Table B
WHERE TableA.ColA & TableA.ColB & TableA.ColC & TableA.ColD = TableB.ColA & TableB.ColB & TableB.ColC & TableB.ColD
编辑:有没有更好的方法来做这种检查?编辑:运行速度太慢2,但"没有响应"花了12.5分钟
我不知道性能与您尝试过的性能相比如何,但在类似的情况下,我使用 UNION 查询来设置数据,第二个基于 UNION 的查询来汇总数据,第三个查询来获取方差。 另一个功能,也是我这样做的原因,是它在任何一个表中查找与另一个表不匹配的记录 - 我通常需要知道。 注意 - 假设 ColE 是数字,我使用 0,如果您的数据是文本,您可能需要调整查询。
联盟:
Select ColA, ColB, ColC, ColD, ColE as SourceA, 0 as SourceB from TableA
Union All Select ColA, ColB, ColC, ColD, 0, ColE from TableB
总结:
Select ColA, ColB, ColC, ColD, sum(SourceA) as SourceA, sum(SourceB) as SourceB from UNION
比较:
Select ColA, ColB, ColC, ColD, SourceA, SourceB from SUMMARY where ((SourceA <> SourceB) or (SourceA is null) or (SourceB is null))