У меня есть эта действительно большая таблица с миллионами записей каждый день, и в конце каждого дня я извлекаю все записи предыдущего дня. Я делаю это так:
String SQL = "select col1, col2, coln from mytable where timecol = yesterday";
Statement.executeQuery(SQL);
Проблема в том, что эта программа занимает примерно 2 ГБ памяти, потому что она принимает все результаты в памяти, а затем обрабатывает ее.
Я попытался установить Statement.setFetchSize(10)
, но он принимает точно такую же память из ОС, это не имеет никакого значения. Для этого я использую драйвер JDBC Microsoft SQL Server 2005.
Есть ли способ прочитать результаты в небольших кусках, таких как драйвер базы данных Oracle, когда запрос выполняется, чтобы отображать только несколько строк, и при прокрутке вниз отображаются больше результатов?