Главная страница
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.014 c
1-3416
CCCatch
2002-08-22 18:16
2002.09.02
Как вытащить первые и поледние символы из Edit1??


3-3314
wassil
2002-08-13 16:03
2002.09.02
O Abbrevia component


14-3604
vile
2002-08-07 16:07
2002.09.02
Delphi & Excel


8-3530
mari_ra
2002-04-24 18:23
2002.09.02
Как вывести BMP на панель?


6-3556
S@shka
2002-06-21 19:01
2002.09.02
Интересный Вопрос