2015-03-13 2 views
0

Какой лучший подход (скорость) получить размер RestultSet в Java, поэтому я могу сохранить их в Array, которые мне нужно указать размер до создания, я нашел следующее:Лучший способ получить размер «ResultSet»

  1. Звоните ResultSet.last(), затем звоните ResultSet.getRow().
  2. Итерация через ResultSet с использованием next() при наличии счетчика.
  3. Выполнение запроса SELECT COUNT для любого заданного запроса.
  4. Выполнение FOUND_ROWS() после каждого запроса.
  5. Прочитать результаты в ArrayList, а затем преобразовать его в массив.
+2

Почему бы не прочитать данные в списке, а затем скопировать их в массив? Похоже, вы пытаетесь решить неправильную проблему. – skaffman

+0

@Vihar Я сделал некоторые поиски, но я пытаюсь увидеть мнения о том, что можно было бы считать лучше других. поэтому я перечислил все возможные решения. – mabuzer

+0

@ skaffman указан как опция №5, но считается хорошей практикой, для этого не нужно было время, чтобы преобразовать CPU в 'ArrayList' в' Array'? – mabuzer

ответ

2

Единственный вариант: # 5: поместить данные в ArrayList и использовать toArray для извлечения массива.

Варианты №3 и №4 (дополнительные запросы) - плохая идея, по скорости, потому что запросы к базе данных имеют присущую задержка, независимо от того, насколько быстро ваша база данных.

Варианты №1 и №2 - всего лишь плохая идея; ResultSet предназначен для повторения в одном направлении. Пока вы можете переместить курсор в других направлениях, большинство драйверов JDBC не будут работать слишком хорошо, делая это.

И, наконец, вы должны действительно пересмотреть, возвращая массив. Массивы Java отлично подходят для создания новых типов данных коллекций и высокопроизводительных библиотек, но для большинства бизнес-целей они уступают стандартным API коллекций.

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