Форум: "Базы";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c