У меня есть база данных H2 с 120m строками и 4 столбцами только с целочисленными значениями. Я пытаюсь подсчитать все повторяющиеся строки.
Это оператор выбора:
SELECT a, b, c, d, COUNT(*) AS dupes FROM t1 GROUP BY a, b, c, d HAVING COUNT(*) > 1;
Когда я использую этот оператор в базе данных с ~ 4 миллионами строк, он отлично работает. В базе данных с числом строк> 4 м он вызывает исключение ArrayOutOfBounds. В базе данных с более чем ~ 10 миллионами строк я получаю OutOfMemoryError (увеличение Java Heap Space не помогло) или ошибку нехватки физической памяти.
Как я могу улучшить инструкцию select? Как сделать его более эффективным для строк> 10 млн и почему возникает исключение ArrayOutOfBounds с строками> 4 млн?