Переделал процедуру импорта из текстового файла и скорость упала в 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'

Ответить