MS Access / SQL加入大数据集

时间:2016-04-26 10:45:45

标签: sql database performance ms-access

我正在尝试运行检查以查看表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分钟"没有响应"

1 个答案:

答案 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))