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

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



Память: 0.46 MB
Время: 0.016 c
1-85538
Pvk2002
2002-09-12 11:17
2002.09.26
Вопрос с System Tray


1-85446
ed_209
2002-09-14 05:18
2002.09.26
выход из процедуры


14-85651
VEG
2002-08-30 01:12
2002.09.26
Через два дня произойдет всемирная катострофа!!!


3-85346
Lina
2002-09-04 13:41
2002.09.26
Вычисляемые поля ...


8-85617
a_n_t
2002-05-30 16:40
2002.09.26
rgb -> 16bit




   Наверх