【发布时间】:2020-08-21 10:24:03
【问题描述】:
我有一个 H2 数据库,它有 120m 行和 4 列,只有整数值。我正在尝试计算所有重复的行。
这是选择语句:
SELECT a, b, c, d, COUNT(*) AS dupes FROM t1 GROUP BY a, b, c, d HAVING COUNT(*) > 1;
当我在大约 4m 行的数据库中使用此语句时,它可以正常工作。 在具有 >4m 行的数据库中,它会引发 ArrayOutOfBounds 异常。 在行数超过 10m 的数据库中,我收到 OutOfMemoryError(增加 Java 堆空间没有帮助)或物理内存不足错误。
如何改进 select 语句?我怎样才能使它更有效地处理 >10m 行和 为什么它会抛出 >4m 行的 ArrayOutOfBounds 异常?
【问题讨论】:
标签: java sql count duplicates h2