Переделал процедуру импорта из текстового файла и скорость упала в 6 раз
на IB4 и в 2 раза на FB 1.5.3. Сижу - гадаю, в чем дело.
Основных отличий два:
1) раньше через параметры передавались только строковые значения, а
теперь - все
2) раньше where было по числовому полю, а теперь - по строковому длиной
до 15 символов
Сделал тест: в цикле 1000 раз гоняется
select WareNum from wares where WareNum=6
и
select WareNum from wares where Dashcode=:Dashcode,
(где :Dashcode = 'BLABLABLA')
отличия во времени незаметны
update wares set InBox=1 where WareNum=6
и
update wares set InBox=:InBox where Dashcode=:Dashcode
тоже глазом не различаются.
Кто ж тогда тормозит???
Полный старый запрос:
UPDATE Wares SET
NewRozn=162,PriceOutCurr='',NewMelkOpt=162,MelkOptCurr='',
NewKpOpt=162,KpOptCurr='',DopInfo=?DopInfo,Waranty=30,
NewAsm=162,PriceAsmCurr='',InfoFile=?InfoFile,NewDealer=162,
DealerCurr='',ShortName=?ShortName,WareClass=0,PrintIt=?PrintIt,WLabel='P'
WHERE WareNum=41983
DOPINFO = 'что-то там'
INFOFILE = 'что-то там'
SHORTNAME = 'что-то там'
PRINTIT = 'T'
Полный новый запрос:
update WARES set
NAME=?NAME,SHORTNAME=?SHORTNAME,MINCOMPLEKT=?MINCOMPLEKT,DOPINFO=?DOPINFO,
INFOFILE=?INFOFILE,MEASUNIT=?MEASUNIT,ORIGIN=?ORIGIN,WARANTY=?WARANTY,
PRINTIT=?PRINTIT,GROSSWEIGHT=?GROSSWEIGHT,VOLUME=?VOLUME,DSCHEME_ID=?DSCHEME_ID,
DROP_RUB_PRICE=?DROP_RUB_PRICE,NEWROZN=?NEWROZN,NEWASM=?NEWASM,WLabel='P'
where DASHCODE=?DASHCODE
NAME = 'что-то там'
SHORTNAME = 'что-то там'
MINCOMPLEKT = 'что-то там'
DOPINFO = 'что-то там'
INFOFILE = 'что-то там'
MEASUNIT = 'шт'
ORIGIN = 'Китай'
WARANTY = 12
PRINTIT = 'T'
GROSSWEIGHT = 0.18
VOLUME = 0.00138
DSCHEME_ID = 0
DROP_RUB_PRICE = 'T'
NEWROZN = 31
NEWASM = 31
DASHCODE = 'G03690'