powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как оптимальнее получить данные из БД?
10 сообщений из 10, страница 1 из 1
Как оптимальнее получить данные из БД?
    #32966259
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаясь к давнему вопросу
Задача следующая. Требуется сделать выборку данных, потом запихнуть ее в массив.
Селект многотабличный.
Я придумал три варианта решения:
1. Получить ResultSet.
Потом сделать
Код: plaintext
rs.last();\nlineCount = rs.getRow();\nrs.first();
Инициализировать массивы и заполнить их пройдясь последовательно по ResultSet.

2. Сделать count(*) from (МойСелект).
Инициализировать массивы. Опять сделать селект и заполнить массивы пройдясь последовательно по ResultSet.

3. Использовать не массивы, а ArrayList, тогда проблема с получением количества строк вроде как отпадает.

Итак, какой метод будет оптимальнее с точки зрения используемой памяти и процессорного времени?
Выборка максимально несколько тысяч строк, а так обычно сотня-две.
...
Рейтинг: 0 / 0
Как оптимальнее получить данные из БД?
    #32966277
пробел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ArrayList
...
Рейтинг: 0 / 0
Как оптимальнее получить данные из БД?
    #32966301
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробелArrayList
Если можно, то вкратце почему?
...
Рейтинг: 0 / 0
Как оптимальнее получить данные из БД?
    #32966366
пробел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. ArrayList - обертка вокруг Object[]. да?

2. массивы, кстати можно "наращивать", что и делается внутри ArrayList.
...
Рейтинг: 0 / 0
Как оптимальнее получить данные из БД?
    #32966379
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2GMax так твоя основная задача - как можно проще определить количество возвращенных записей? Если БД - Oracle, то м.б. попробовать сделать через запрос? К примеру:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select *
from (
  select e.*
       , count( 1 ) over (order by empno desc) cnt
  from scott.emp e
)
order by cnt desc;

Значение поля CNT в первой строке - общее количество строк. Это значение можно прочитать после прочтения первой записи Resultset'а. Хотя возникают дополнительные нагрузки на сервер.
...
Рейтинг: 0 / 0
Как оптимальнее получить данные из БД?
    #32966446
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Denis Popov:
Задача заполнить массив. А для того, чтобы инициализировать массив нужно знать количество строк.
Можно и так. Вопрос в том, как будет оптимальнее в плане загрузки сервера и клиента.
Сделать Count или использовать ArrayList.
...
Рейтинг: 0 / 0
Как оптимальнее получить данные из БД?
    #32966454
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробел1. ArrayList - обертка вокруг Object[]. да?

2. массивы, кстати можно "наращивать", что и делается внутри ArrayList.

Просто не совсем представляю внутреннюю реализацию ArrayList.
Может где какие статьи есть по этому поводу?
...
Рейтинг: 0 / 0
Как оптимальнее получить данные из БД?
    #32966503
пробел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GMax пробел1. ArrayList - обертка вокруг Object[]. да?

2. массивы, кстати можно "наращивать", что и делается внутри ArrayList.

Просто не совсем представляю внутреннюю реализацию ArrayList.
Может где какие статьи есть по этому поводу?а src посмотреть? :)

ArrayList
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
...
 public  ArrayList( int  initialCapacity) {
   super ();
   if  (initialCapacity <  0 )
     throw   new  IllegalArgumentException(...);
  
   this .elementData =  new  Object[initialCapacity];
}

 public   void  ensureCapacity( int  minCapacity) {
  modCount++;
   int  oldCapacity = elementData.length;
   if  (minCapacity > oldCapacity) {
    Object oldData[] = elementData;
     int  newCapacity = (oldCapacity *  3 )/ 2  +  1 ;
     if  (newCapacity < minCapacity)
    newCapacity = minCapacity;
    elementData = (E[]) new  Object[newCapacity];
    System.arraycopy(oldData,  0 , elementData,  0 , size);
  }
}
...
...
Рейтинг: 0 / 0
Как оптимальнее получить данные из БД?
    #32967060
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо, не стоит полагаться на советы. Лучше проверить все на реальной машине, с конкретной СУБД, драйвером, таблицами и т.д. Времени это займет, вроде, не много, но пользы будет выше крыши.
О результатах можно и сюда запостить, думаю всем будет интересно.
...
Рейтинг: 0 / 0
Как оптимальнее получить данные из БД?
    #32967329
я ArrayList именно поэтому и привел в качестве решения
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как оптимальнее получить данные из БД?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]