Можете ли вы запустить объединение в SQL на сервере базы данных?
Если нет, вы, вероятно, застряли в итерации каждого из 200 000 результатов, соединяя его с 50 000 строк и записывая результаты (так что вы не сохраняете более 1 * 50 000 результатов в памяти одновременно)
Или, если у вас есть доступ к нескольким машинам, вы можете разделить свои 200 000 элементов на блоки и сделать один блок на машину?
Редактировать
Используя ваш пример кода, вы должны уметь:
new File( 'output.csv' ).withWriter { w ->
target.eachRow( '''SELECT a.a, a.b, a.c, b.neededColumn FROM
bigTable a
JOIN mediumTable b ON a.stuff = b.stuff
ORDER BY stuff DESC''' ) { row ->
w.write "$row.a,$row.b,$row.c,$row.neededColumn"
}
}
Это запишет каждую строку в файл output.csv