В моем приложении я использую TADOQuery с select (MSSQL) и связанный с ним TClientDataSet. Мне нужно вставить около миллиона записей и ApplyUpdates.TClientDataSet и большая вставка
Итак, что я вижу в профилировщике SQL Server? Я вижу, что для каждая вставленная строка имеет 3 запроса: sp_prepare скрипта вставки, sp_execute его с некоторыми значениями и sp_unprepare.
Я хочу только подготовить sql один раз для всех записей, прежде чем вставлять и не готовить его после. Как мне это сделать?
Добавлено после:
В запросе У меня есть сценарий для хранимой процедуры:
tmpQuery := DefineQuery(FConnection, [
'exec up_getOperatorDataSet ',
' @tablename = :tablename, ',
' @operator = :operator, ',
' @forappend = :forappend, ',
' @withlinksonly = :withlinksonly, ',
' @ids = :ids '
], [
Param(ftString, sTableName),
Param(ftInteger, FOperatorId),
Param(ftBoolean, opForAppendOnly in OpenParams),
Param(ftBoolean, opOnlyWithModelLinks in OpenParams),
Param(ftString, sIds)
], Result);
Он выбирает все поля из таблицы sTableName с некоторыми параметрами.
Пример вставки из профилировщика:
шаг 1:
declare @p1 int
set @p1=486
exec sp_prepare @p1 output,N'@P1 int,@P2 int,@P3 datetime,@P4 int,@P5 int,@P6 int,@P7 int,@P8 int,@P9 varchar(128),@P10 bit,@P11 numeric(19,4),@P12 smallint,@P13 smallint,@P14 smallint,@P15 smallint',N'insert into parser_prices
(operator_id, request_id, date, nights, model_hotel_id, model_meal_id, model_room_id, model_htplace_id, spo, hotelstop, price, frout_econom, frout_business, frback_econom, frback_business)
values
(@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15)
',1
select @p1
шаг 2:
exec sp_execute 486,21,2000450,'2009-12-04 00:00:00',14,2118,22,-9555,18,'2009-10.MSK.Bali.13.10.09-27.03.10',0,15530.0000,3,3,3,3
шаг 3:
exec sp_unprepare 486
и это для всех новых строк.
Можем ли мы увидеть пример сценария? Вы должны иметь возможность параметризовать его, и в этом случае вы можете предварительно настроить его, а затем просто изменять параметры каждый раз перед повторным выполнением. –
Некоторые детали добавлены. – silent