
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
14.07.2006, 17:27
|
|||
|---|---|---|---|
|
|||
Перебор записей таблицы |
|||
|
#18+
Есть небольшая проблемка: в С++Builder создано приложение которое вытягивает данные из БД через ADODataSet, необходимо эти данные засунуть в STL-есвкий vector<>. Я делаю это так: while (!DBModule->ADODataSet->Eof) { .... занос данных в ячейку вектора... DBModule->ADODataSet->Next(); } Но данный подход работает очень долго прибольших обьемах данных (( Кто знает другой способ для более быстрого извлечения данных???? Очень нужно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 18:37
|
|||
|---|---|---|---|
Перебор записей таблицы |
|||
|
#18+
зачем так делать? Одни и те же данные хранить два раза в памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 18:52
|
|||
|---|---|---|---|
|
|||
Перебор записей таблицы |
|||
|
#18+
Не хранить - после переноса в вектор, я закрываю соединение и освобождаю ресурс - данные остаются только в векторе с которым и происходит дальнейшая работа (причем со всеми данными сразу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 19:44
|
|||
|---|---|---|---|
|
|||
Перебор записей таблицы |
|||
|
#18+
ИМХО быстро не получится и надо будет бугать по датасету, можно для вектора зарезервировать память reserve. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 20:31
|
|||
|---|---|---|---|
|
|||
Перебор записей таблицы |
|||
|
#18+
В том то и дело что тормозом выступает ADODataSet->Next() шо я вектором, шо без вектора разницы не заметно. Вопрос можно сформулировать еще так: Можно ли из ДатаСета перегнать данный одним махом (не циклом) в какойнибудь буфер в памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 20:40
|
|||
|---|---|---|---|
Перебор записей таблицы |
|||
|
#18+
DarkCorsair Кто знает другой способ для более быстрого извлечения данных???? Очень нужно! вы говорите ADO чтобы открывать reaodonly, forward only ? также можно посмотреть MSDN -> GetRows там читается рекордсет в массив ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 20:57
|
|||
|---|---|---|---|
|
|||
Перебор записей таблицы |
|||
|
#18+
Да доступ к базе только на чтения режим блокировки REadOnly и тип курсора ctOpenForwardOnly или ctStatic. И при таких настройках оно всеравно долго работает. За GetRow - спасибо, гляну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.07.2006, 01:02
|
|||
|---|---|---|---|
|
|||
Перебор записей таблицы |
|||
|
#18+
2: Lepsik Еще раз большое спасибо - GetRows как раз то что мне нужно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2030835]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 274ms |
| total: | 527ms |

| 0 / 0 |
