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

Вниз

ADO - вставка записей   Найти похожие ветки 

 
FireStream ©   (2002-09-03 23:31) [0]

Здравствуйте!
Пользуюсь TADOCommand для вставки записей в БД.
Записей обычно бывает много и поэтому происходит это дело очень долго:(
Нельзя ли как-то убыстрить?
Работаю обычно
with TADOCommand.Create(nil) do
try
Connection := MainDB;
...
{в цикле}
CommandText := Format("insert into %s(%s, %s) values(%d, %d)", [....]);
Execute;
...
finally
Free;
end;


 
FireStream ©   (2002-09-04 11:51) [1]

Сам себе и отвечу на свой же вопрос:))
Надо делать так:
with TADOCommand.Create(nil) do
try
Connection := MainConnection;
Parameters.CreateParameter("Parameter1", ftInteger, pdInput, 0, 0);
Parameters.CreateParameter("Parameter2", ftInteger, pdInput, 0, 0);
CommandText := Format("insert into %s(%s, %s) values(:Parameter1, :Parameter2)", [...]);
Prepared := True;

...

{в цикле}
Parameters[0].Value := ...;
Parameters[1].Value := ...;
Execute;

...

finally
Free;
end;

Так работает раза в два-три быстрей. Если ещё как-то можно убыстрить, с удовольствием бы услышал...


 
Nikolai_S ©   (2002-09-04 12:45) [2]

Почему с параметрами работает быстрее?
И как влияет на это свойтсво Prepared?


 
FireStream ©   (2002-09-04 14:37) [3]

В общем как я понимаю в результате этого каждый раз не происходит интерпретация SQL-запроса. Из-за того, что Prepared=True, запрос один раз подготавливается АДО для выполнения, и затем выполняется(один и тот же запрос) с различными данными. Если в цикле каждый раз менять CommandText, то с Prepared = True выполняется только дольше - из-за того что команда подготавливается АДО прежде чем выполниться. А в принципе, если ситуация в чём-то отличается от моей, то с Parameters ничуть не быстрее.


 
ЮЮ ©   (2002-09-05 03:13) [4]

>Так работает раза в два-три быстрей. Если ещё как-то можно убыстрить, с удовольствием бы услышал...

Перед началом цикла открыть транзакцию, в конце - закрыть. Ещё в 2-3 раза ускоришься :-)


 
Виталий Панасенко   (2002-09-05 09:06) [5]

Установи курсор на Server и TableDirect := True



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

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

Наверх




Память: 0.47 MB
Время: 0.013 c
14-85686
Игорь Шевченко
2002-08-28 12:23
2002.09.26
Встреча мастаков в Москве


1-85589
Администратор
2002-09-14 12:33
2002.09.26
Срочно!!! Траффиикк


1-85509
Серг
2002-09-17 10:20
2002.09.26
Console App


1-85458
AFrolov
2002-09-16 11:49
2002.09.26
Как присвоить значение i-му биту integer?


3-85404
Извращенец2
2002-09-05 06:38
2002.09.26
prTxtReport на лазерном принтере