计算H2数据库中的重复行

时间:2020-05-06 12:40:24

标签: java sql count duplicates h2

我有一个120m行和4列仅具有整数值的H2数据库。我正在尝试计算所有重复的行。

这是select语句:

<https://codepen.io/venizia03/pen/abvqNeZ>

当我在具有约4m行的数据库中使用此语句时,它可以正常工作。 在行数超过4m的数据库中,它将引发ArrayOutOfBounds异常。 在一个行数超过1000万的数据库中,出现OutOfMemoryError(Java堆空间增加无济于事)或物理内存不足错误。

如何改进select语句?如何使> 1000万行和 为什么它会抛出一个ArrayOutOfBounds异常且行数超过4m?

1 个答案:

答案 0 :(得分:0)

不幸的是,除非为GROUP BY子句提供一个兼容的索引,否则H2需要大量内存来进行结果多行的分组查询。如果没有足够的内存,则需要定义这样的索引。

CREATE INDEX T1_ABCD_IDX ON T1(A, B, C, D);

这种AIOOBE异常看起来像一个bug,但是解决方法是相同的。

相关问题