Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.02;
Скачать: CL | DM;

Вниз

Добавление записей (ADO)   Найти похожие ветки 

 
Павел Николаевич   (2002-08-12 05:13) [0]

Программа из внешнего источника должна заносить в БД Access данные.
Используется ADO.
Проблема заключается в маленькой скорости добавления записей.

Тестировал несколько метотодов добавлления записей.
1. С помощью ADOCommand выполняется запрос на добавление записи:
"INSERT INTO table4 VALUES (1,2,3)"
2. Добавление с помощью метода
TADODataSet.AppendRecord([1,2,3])
3. Добавление с помощью метода
TADODataSet.AppendRecord([1,2,3])
в "пакетном" режиме ( TADODataSet.LockType:=ltBatchOptimistic;)
и с вызовом TADODataSet.UpdateBatch в конце.

Наиболее быстрый метод №1, потом №3 и №2. Причем №2 и №3 почти
одинаковые и где-то на 25% медленее метода 1.
Получается скорость порядка 300 записей в секунду (900 МГц Duron).
Access копирует из таблицы в таблицу 10000 записей за доли секунды.

Есть ли возможность ускорить процесс (возможно другим методом, через
внешний файл...)?


 
sniknik ©   (2002-08-12 11:15) [1]

Из таблици в таблицу в родном формате самая быстрая скорость, из внешнего источника будет помедленней но не так медленно как в вашем случае добавления попозиционно.

Пользуйтесь пакетными SQL коммандами типа (INSERT INTO table4 (Fields) SELECT Fields FROM ...)
скорость будет около сек за 13052 зап. (селерон 1000)



 
Shaman_Naydak ©   (2002-08-12 11:25) [2]

Для попозиционной вставке: можно ускорить 1-ый способ
INSERT INTO table4 VALUES (:Value1,:Value2, :Value3)
Выставь Prepared:=True

и в цикле загоняй значения через параметры, не изменяя текста запроса


 
Soft(Unpowered Kiborg) ©   (2002-08-12 11:45) [3]

Советую использовать ADOQuery и придварительно при этом подключится через ADOConnection(это экономит время на создании подключения к базе). А далее

ADOQuery.Sql.Clear;
ADOQuery.Sql.Add("insert into table4(ваши поля) values(ваши данные)");
ADOQuery.Prepare;
ADOQuery.ExecSql;
ADOQuery.Unprepare;



Страницы: 1 вся ветка

Текущий архив: 2002.09.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
14-3565
Guru-ru
2002-08-03 03:36
2002.09.02
Запуск программы на другом компе.


3-3265
New123
2002-08-11 02:04
2002.09.02
Порядок записей по умолчанию в таблице


4-3680
Lamer86
2002-07-03 10:33
2002.09.02
Как убить процесс, зная его PID


14-3575
AL2002
2002-08-02 17:56
2002.09.02
Есть у кого-то резак Teak W58E?


14-3597
VictorT
2002-05-27 13:31
2002.09.02
Раз пошла такая пьянка, то может и львовянам стрелкануться?