我在 Oracle 数据库中有一个表,用于存储用户上传的事务批次。一种新的上传机制已经实现,我想比较一下它的结果。使用原始机制上传单个批次,然后使用新机制上传。我正在尝试查找唯一的行(我在第一次上传中存在的行在第二次上传中不存在或不同。或者在第一次上传中不存在但在第二次上传中确实存在或不同的行)。我正在处理一个庞大的数据集(超过一百万条记录),这使得这种分析非常困难。
我尝试了几种方法:
SELECT col1, col2 ...
FROM table
WHERE upload_id IN (first_upload_ID, second_upload_id)
GROUP BY col1, col2..
HAVING COUNT(*) = 1;
SELECT col1, col2 ...
FROM table
WHERE upload_id = first_upload_ID
MINUS
SELECT col1, col2 ...
FROM table
WHERE upload_id = second_upload_id;
SELECT col1, col2 ...
FROM table
WHERE upload_id = second_upload_id
MINUS
SELECT col1, col2 ...
FROM table
WHERE upload_id = first_upload_ID;
这两个结果都返回了几十万行,难以分析。
有没有人对如何处理/简化这个问题有什么建议?我可以在每次上传时唯一的几个列上进行自我加入吗?如果是,该自我加入会是什么样子?
感谢您的帮助。