Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.011 c
1-3437
Fly`
2002-08-20 12:55
2002.09.02
StatusBar, клик по панели.


1-3379
Jony
2002-08-22 10:39
2002.09.02
Групповая операция - одним оператором


4-3658
ed2000
2002-06-29 20:16
2002.09.02
Отключение прорисовки формы


3-3236
Димон1
2002-08-09 14:51
2002.09.02
Наверно пора на обед....


14-3583
data
2002-08-05 17:39
2002.09.02
Кто-нибудь смотрел конкурс




   Наверх