我在 Postgres 中有两个类似的表,只有一个 32 字节的拉丁字段(简单的 md5 哈希)。 两个表都有大约 30,000,000 行。表格差异不大(10-1000行不同)
Postgres 是否有可能找到这些表之间的差异,结果应该是我上面描述的 10-1000 行。
这不是真正的任务,我只是想知道 PostgreSQL 如何处理类似 JOIN 的逻辑。
最佳答案
EXISTS
似乎是最好的选择。
tbl1
就是这个例子中有多余行的表:
SELECT *
FROM tbl1
WHERE NOT EXISTS (SELECT FROM tbl2 WHERE tbl2.col = tbl1.col);
如果您不知道哪个表有多余的行或两个表都有,您可以切换表名后重复上述查询,或者:
SELECT *
FROM tbl1
FULL OUTER JOIN tbl2 USING (col)
WHERE tbl2 col IS NULL OR
tbl1.col IS NULL;
在后面的帖子中概述基本技术:
旁白:数据类型 uuid
对于 md5 哈希是有效的:
关于sql - 查找 PostgreSQL 中两个大表之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330403/