Форум: "Базы";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизМедленное обновление БД Найти похожие ветки
← →
kreyl (2006-04-26 00:01) [0]Delphi2006 + ADO +Access. Программа производит вычисления; их результат являет собой несколько массивов по 15000 чисел в каждом. Эти массивы нужно запихнуть в таблицу БД.
Таблица простая - два столбца, Identity и результат.
Сначала очищаю таблицу запросом, потом открываю dataset к ней с параметром LockType := ltBatchOptimistic; потом отключаюсь от базы и заполняю датасет. Потом подключаюсь к базе и говорю UpdateBatch.
Этот самый апдейт работает очень медленно - минут десять. Размер результирующего mdb файла при этом - меньше 10 МБ. Подскажите, пожалуйста, как быстро внести в БД данные из массива? Может, я структурно что-то делаю неправильно?
Заранее спасибо.
← →
Johnmen © (2006-04-26 00:47) [1]Просто запросом INSERT INTO ...
← →
MsGuns © (2006-04-26 13:35) [2]>Johnmen © (26.04.06 00:47) [1]
>Просто запросом INSERT INTO ...
Одиночными инсертами будет не быстрее, чем TDataSet.Append
Для "бістрой закачки" эффективен выгруз в Эксель и из него средствами SQL в акцешную БД
← →
Johnmen © (2006-04-26 13:39) [3]
> MsGuns © (26.04.06 13:35) [2]
Быстрее.
← →
Delphi basic (2006-04-26 13:41) [4]Попробуй, то же самое, но приконнектиться к БД через ODBC (хотя бы ради интереса :)
← →
MsGuns © (2006-04-26 14:10) [5]>Johnmen © (26.04.06 13:39) [3]
>Быстрее.
В общем случае - нет. При правильных установках коннекта и самого датасета практически одни в один, да это и понятно - ведь дельфишный TADODataSet юзает те же самые запросы. "Тормоза" получаются лишь как следствия укправления транзакцией самим датасетом, что тоже "лечится" ;)
← →
Johnmen © (2006-04-26 14:17) [6]
> MsGuns © (26.04.06 14:10) [5]
Быстрее. Ибо не надо "обслуживать" набор данных.
← →
Slym © (2006-04-28 05:18) [7]1. Монопольно открой базу.
2. ltBatchOptimistic - накой тебе это? памяти много?
3. Можно INSERT INTO +prepared
4. Если очень быстро надо временная аля "MemotyTable", или массив, или TMemoryStream, или тупо file of record, а уж в конце можно и в базу лить (смахивает на ltBatchOptimistic).
5. можно 2х поточно... 1 считает и пишет в буфер, 2 пишет в базу
← →
Slym © (2006-04-28 05:34) [8]Я бы делал связку:
Монопольный доступ+2х поточно, с буфером TMemoryStream+ INSERT INTO +prepared
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.016 c