![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO - вставка записей [D5, Access]
FireStream © (2002-09-03 23:31:00)Здравствуйте!
Пользуюсь TADOCommand для вставки записей в БД.
Записей обычно бывает много и поэтому происходит это дело очень долго:(
Нельзя ли как-то убыстрить?
Работаю обычно
with TADOCommand.Create(nil) do
try
Connection := MainDB;
...
{в цикле}
CommandText := Format("insert into %s(%s, %s) values(%d, %d)", [....]);
Execute;
...
finally
Free;
end;
Виталий Панасенко (2002-09-05 09:06:00) [1]Установи курсор на Server и TableDirect := True
ЮЮ (2002-09-05 03:13:00) [2]>Так работает раза в два-три быстрей. Если ещё как-то можно убыстрить, с удовольствием бы услышал...
Перед началом цикла открыть транзакцию, в конце - закрыть. Ещё в 2-3 раза ускоришься :-)
FireStream (2002-09-04 14:37:00) [3]В общем как я понимаю в результате этого каждый раз не происходит интерпретация SQL-запроса. Из-за того, что Prepared=True, запрос один раз подготавливается АДО для выполнения, и затем выполняется(один и тот же запрос) с различными данными. Если в цикле каждый раз менять CommandText, то с Prepared = True выполняется только дольше - из-за того что команда подготавливается АДО прежде чем выполниться. А в принципе, если ситуация в чём-то отличается от моей, то с Parameters ничуть не быстрее.
Nikolai_S (2002-09-04 12:45:00) [4]Почему с параметрами работает быстрее?
И как влияет на это свойтсво Prepared?
FireStream (2002-09-04 11:51:00) [5]Сам себе и отвечу на свой же вопрос:))
Надо делать так:
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;
Так работает раза в два-три быстрей. Если ещё как-то можно убыстрить, с удовольствием бы услышал...