我正在尝试运行检查以查看表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分钟"没有响应"
答案 0 :(得分:0)
我不知道性能与您尝试的相比如何,但在类似的情况下,我使用UNION查询来设置数据,第二个查询基于UNION来汇总数据和得到差异的第3个。另一个功能,以及我这样做的原因是,它在任何一个表中找不到与另一个表匹配的记录 - 我通常需要知道。注意 - 假设ColE是数字,我使用0,如果您的数据是文本,则可能需要调整查询。
UNION:
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))