2014-12-06 4 views
-1

У меня есть Java ResultSet, который содержит большое количество данных (но все еще может быть сохранен в памяти), извлеченный из базы данных. Я собираюсь работать с этими данными. С точки зрения производительности, следует скопировать содержимое набора результатов в некоторую структуру данных, чтобы как можно скорее закрыть набор результатов и работать с данными из нового контейнера, или лучше не тратить время скопировать содержимое и работать с данными непосредственно из набора результатов?Что самое подходящее время, чтобы закрыть ResultSet

+1

С точки зрения производительности, вы должны прочитать результаты, по крайней мере один раз. Если вам нужно пройти его более одного раза, копирование может быть быстрее. –

ответ

1

ResultSet запрашивает определенное количество строк за раз, в зависимости от используемого драйвера JDBC и используемой базы данных. Поэтому, если ваш запрос имеет миллион возвращенных строк, не все миллионы находятся в памяти, если вы не перебираете ResultSet и не помещаете их в память, конечно. Чтобы ответить на ваш вопрос напрямую, вы закрываете ResultSet, когда вы закончите чтение строк, которые вам нужны, обычно, когда ResultSet.next() возвращает false.

JDBC Developers Guide

+0

Спасибо, поскольку извлеченные данные большие, но все же могут быть полностью сохранены в ОЗУ. –

+0

Он не обязательно должен храниться в памяти, если это не требует вашего использования. – Nick

Смежные вопросы