Страница 1 из 1

Как ускорить выгрузку данных из интерфейса?

Добавлено: 25 дек 2007, 20:21
Serges
Уважаемые коллеги, у кого есть какие мысли по поводу того, как ускорить выгрузку данных, полученных такой вьюхой (выборка сальдо с аналитикой)

Код: Выделить всё

Create view
as select 
	SALDMOUN.DATESAL,
	SALDMOUN.ATL_LASTDATE,
	SALDMOUN.SCHETO,
	SALDMOUN.DBSCHETO,
	SALDMOUN.SUBOSSCH,
	SALDMOUN.SUMS,
	if(SALDMOUN.VIOB=1,'Деб','Кред')(FieldName='VidSaldo'),
	BUHSCHET.NAME,
	if(BUHSCHET.VIDSALD=0,' А', if(BUHSCHET.VIDSALD=1,' П', if(BUHSCHET.VIDSALD=2,' А-П', '???')))(FieldName=TipSchet),
	if(BUHSCHET.BALANS=0,'Баланс', if(BUHSCHET.BALANS=1,'Забаланс', '???'))(FieldName=TipBalans),
	if(SALDMOUN.TBLOS[1]=1 and IsValidall(tnkatorg1),katorg1.nrec,
	 if(SALDMOUN.TBLOS[2]=1 and IsValidall(tnkatorg2),katorg2.nrec,
	  if(SALDMOUN.TBLOS[3]=1 and IsValidall(tnkatorg3),katorg3.nrec,
	   if(SALDMOUN.TBLOS[4]=1 and IsValidall(tnkatorg4),katorg4.nrec,
	    if(SALDMOUN.TBLOS[5]=1 and IsValidall(tnkatorg5),katorg5.nrec,
	     if(SALDMOUN.TBLOS[6]=1 and IsValidall(tnkatorg6),katorg6.nrec,
	      Comp(0)))))))(FieldName=KauOrg),
	if(SALDMOUN.TBLOS[1]=6 and IsValidall(tnbasedoc1),basedoc1.nrec,
	 if(SALDMOUN.TBLOS[2]=6 and IsValidall(tnbasedoc2),basedoc2.nrec,
	  if(SALDMOUN.TBLOS[3]=6 and IsValidall(tnbasedoc3),basedoc3.nrec,
	   if(SALDMOUN.TBLOS[4]=6 and IsValidall(tnbasedoc4),basedoc4.nrec,
	    if(SALDMOUN.TBLOS[5]=6 and IsValidall(tnbasedoc5),basedoc5.nrec,
	     if(SALDMOUN.TBLOS[6]=6 and IsValidall(tnbasedoc6),basedoc6.nrec,
	     Comp(0)))))))(FieldName=KauNomDoc),
	if(SALDMOUN.TBLOS[1]=402 and IsValidall(tnSpKau1),SpKau1.nrec,
	 if(SALDMOUN.TBLOS[2]=402 and IsValidall(tnSpKau2),SpKau2.nrec,
	  if(SALDMOUN.TBLOS[3]=402 and IsValidall(tnSpKau3),SpKau3.nrec,
	   if(SALDMOUN.TBLOS[4]=402 and IsValidall(tnSpKau4),SpKau4.nrec,
	    if(SALDMOUN.TBLOS[5]=402 and IsValidall(tnSpKau5),SpKau5.nrec,
	     if(SALDMOUN.TBLOS[6]=402 and IsValidall(tnSpKau6),SpKau6.nrec,
	     Comp(0)))))))(FieldName=PKau1),
	if(SALDMOUN.TBLOS[1]=403 and IsValidall(tnSpKau1),SpKau1.nrec,
	 if(SALDMOUN.TBLOS[2]=403 and IsValidall(tnSpKau2),SpKau2.nrec,
	  if(SALDMOUN.TBLOS[3]=403 and IsValidall(tnSpKau3),SpKau3.nrec,
	   if(SALDMOUN.TBLOS[4]=403 and IsValidall(tnSpKau4),SpKau4.nrec,
	    if(SALDMOUN.TBLOS[5]=403 and IsValidall(tnSpKau5),SpKau5.nrec,
	     if(SALDMOUN.TBLOS[6]=403 and IsValidall(tnSpKau6),SpKau6.nrec,
	     Comp(0)))))))(FieldName=PKau2),
	if(SALDMOUN.TBLOS[1]=415 and IsValidall(tnSpKau1),SpKau1.nrec,
	 if(SALDMOUN.TBLOS[2]=415 and IsValidall(tnSpKau2),SpKau2.nrec,
	  if(SALDMOUN.TBLOS[3]=415 and IsValidall(tnSpKau3),SpKau3.nrec,
	   if(SALDMOUN.TBLOS[4]=415 and IsValidall(tnSpKau4),SpKau4.nrec,
	    if(SALDMOUN.TBLOS[5]=415 and IsValidall(tnSpKau5),SpKau5.nrec,
	     if(SALDMOUN.TBLOS[6]=415 and IsValidall(tnSpKau6),SpKau6.nrec,
	     Comp(0)))))))(FieldName=PKau3),
	if(SALDMOUN.TBLOS[1]=KodKauV1 and IsValidall(tnSpKau1),SpKau1.nrec,
	 if(SALDMOUN.TBLOS[2]=KodKauV1 and IsValidall(tnSpKau2),SpKau2.nrec,
	  if(SALDMOUN.TBLOS[3]=KodKauV1 and IsValidall(tnSpKau3),SpKau3.nrec,
	   if(SALDMOUN.TBLOS[4]=KodKauV1 and IsValidall(tnSpKau4),SpKau4.nrec,
	    if(SALDMOUN.TBLOS[5]=KodKauV1 and IsValidall(tnSpKau5),SpKau5.nrec,
	     if(SALDMOUN.TBLOS[6]=KodKauV1 and IsValidall(tnSpKau6),SpKau6.nrec,
	     Comp(0)))))))(FieldName=PKau4),
	if(SALDMOUN.TBLOS[1]=KodKauV2 and IsValidall(tnSpKau1),SpKau1.nrec,
	 if(SALDMOUN.TBLOS[2]=KodKauV2 and IsValidall(tnSpKau2),SpKau2.nrec,
	  if(SALDMOUN.TBLOS[3]=KodKauV2 and IsValidall(tnSpKau3),SpKau3.nrec,
	   if(SALDMOUN.TBLOS[4]=KodKauV2 and IsValidall(tnSpKau4),SpKau4.nrec,
	    if(SALDMOUN.TBLOS[5]=KodKauV2 and IsValidall(tnSpKau5),SpKau5.nrec,
	     if(SALDMOUN.TBLOS[6]=KodKauV2 and IsValidall(tnSpKau6),SpKau6.nrec,
	     Comp(0)))))))(FieldName=PKau5)

	from SALDMOUN,
		BUHSCHET,
		katorg katorg1,
		katorg katorg2,
		katorg katorg3,
		katorg katorg4,
		katorg katorg5,
		katorg katorg6,
		basedoc basedoc1,
		basedoc basedoc2,
		basedoc basedoc3,
		basedoc basedoc4,
		basedoc basedoc5,
		basedoc basedoc6,
		SpKau SpKau1,
		SpKau SpKau2,
		SpKau SpKau3,
		SpKau SpKau4,
		SpKau SpKau5,
		SpKau SpKau6
	where ((SALDMOUN.SCHETO==BUHSCHET.SCHET
		and SALDMOUN.SUBOSSCH==BUHSCHET.SUBSCH

		and SALDMOUN.KAUOS[1]==katorg1.nrec
		and SALDMOUN.KAUOS[2]==katorg2.nrec
		and SALDMOUN.KAUOS[3]==katorg3.nrec
		and SALDMOUN.KAUOS[4]==katorg4.nrec
		and SALDMOUN.KAUOS[5]==katorg5.nrec
		and SALDMOUN.KAUOS[6]==katorg6.nrec

		and SALDMOUN.KAUOS[1]==basedoc1.nrec
		and SALDMOUN.KAUOS[2]==basedoc2.nrec
		and SALDMOUN.KAUOS[3]==basedoc3.nrec
		and SALDMOUN.KAUOS[4]==basedoc4.nrec
		and SALDMOUN.KAUOS[5]==basedoc5.nrec
		and SALDMOUN.KAUOS[6]==basedoc6.nrec

		and SALDMOUN.KAUOS[1]==SpKau1.nrec
		and SALDMOUN.KAUOS[2]==SpKau2.nrec
		and SALDMOUN.KAUOS[3]==SpKau3.nrec
		and SALDMOUN.KAUOS[4]==SpKau4.nrec
		and SALDMOUN.KAUOS[5]==SpKau5.nrec
		and SALDMOUN.KAUOS[6]==SpKau6.nrec
		))
Тормоза начинаются, когда делаешь loop по этой выборке, чтобы передать полученные значения в массив для выгрузки в Excel - сальдо за один месяц "лупится" полчаса (ограничение по датам ставится баундсом). Нетрудно представить, сколько займет времени выборка за год. Есть ли еще какой-то вариант передавать значения, кроме как перебирать таблицу? Вообще, странно, что loop по таблице в памяти и присваивание значений массиву занимает так много времени...

Добавлено: 25 дек 2007, 23:03
Den
А можно узнать сколько записей лежит физически в saldmoun вообще и конкретно за месяц выборки ? Да и лучше весь код привести здесь...

Добавлено: 26 дек 2007, 08:32
Nikos
Все, конечно, зависит от объемов, но я аналогично выгружаю в Excel обороты, так там 10000 строк выгружаются примерно за минуту. Во вьюхе просто select * from oborot;
а в коде xlRes := xlStWriteToMatrix(1, 6, if(GetAnyKau(0,oborot.TBLOS[1],oborot.KAUOS[1]),GivenAnName(1),'')); if not xlRes break;

Добавлено: 26 дек 2007, 11:41
aleks1232321
Недавно нужно было посчитать долги по организациям на 1 число месяца. Первый вариант - LOOP по SALDMOUN. Результат получил через минут 30-40. Второй вариант. Сначала выгрузил во временную таблицу с нужными МНЕ индексами SALDMOUN в нужно разрезе - примерно 1,5 минуты, а потом посчитал долги - еще 1,5 минуты. Организаций - несколько тысяч.

Добавлено: 26 дек 2007, 13:13
Алексей
Serges
выборка конечно - убойная :)))
вы скажите что вы хотите, может вам помогут

А вообще пользуйтесь if(GetAnyKau(0,oborot.TBLOS[1],oborot.KAUOS[1]),GivenAnName(1),''))

Добавлено: 26 дек 2007, 20:18
Serges
Алексей писал(а):Serges
выборка конечно - убойная :)))
вы скажите что вы хотите, может вам помогут

А вообще пользуйтесь if(GetAnyKau(0,oborot.TBLOS[1],oborot.KAUOS[1]),GivenAnName(1),''))
Да, выборка не для слабонервных 8-)
Использование GetAnyKau вместо приведенной громоздкой конструкции ускорили дело - до 7 минут вместо 30.
Теперь выборка выглядит так (засовываю сразу во временную таблицу):

Код: Выделить всё

insert iSaldo  
(
	DataSald,
	DataRasch,
	SchetC,
	Schet,
	SubSchet,
	Summa,
	VidSaldo,
	SchSubsN,
	TipSch,
	TipBal,
	Org,
	nrecDO,
	PAnal_01, 
	PAnal_02, 
	PAnal_03, 
	PAnal_04, 
	PAnal_05  
)
        select  
	SALDMOUN.DATESAL,
	SALDMOUN.ATL_LASTDATE,
	SALDMOUN.SCHETO,
	SALDMOUN.DBSCHETO,
	SALDMOUN.SUBOSSCH,
	SALDMOUN.SUMS,
	if(SALDMOUN.VIOB=1,'Деб','Кред'),
	BUHSCHET.NAME,
	if(BUHSCHET.VIDSALD=0,' А', if(BUHSCHET.VIDSALD=1,' П', if(BUHSCHET.VIDSALD=2,' А-П', '???'))),
	if(BUHSCHET.BALANS=0,'Баланс', if(BUHSCHET.BALANS=1,'Забаланс', '???')),

	if(SALDMOUN.TBLOS[1]=1,if(GetAnyKau(0,SALDMOUN.TBLOS[1],SALDMOUN.KAUOS[1]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[2]=1,if(GetAnyKau(0,SALDMOUN.TBLOS[2],SALDMOUN.KAUOS[2]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[3]=1,if(GetAnyKau(0,SALDMOUN.TBLOS[3],SALDMOUN.KAUOS[3]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[4]=1,if(GetAnyKau(0,SALDMOUN.TBLOS[4],SALDMOUN.KAUOS[4]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[5]=1,if(GetAnyKau(0,SALDMOUN.TBLOS[5],SALDMOUN.KAUOS[5]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[6]=1,if(GetAnyKau(0,SALDMOUN.TBLOS[6],SALDMOUN.KAUOS[6]),GivenAnName(1),'Нет аналитики'),
	'Нет аналитики' )))))),

	if(SALDMOUN.TBLOS[1]=6,if(GetAnyKau(0,SALDMOUN.TBLOS[1],SALDMOUN.KAUOS[1]),GivenAnName(2),Comp(0)),
	if(SALDMOUN.TBLOS[2]=6,if(GetAnyKau(0,SALDMOUN.TBLOS[2],SALDMOUN.KAUOS[2]),GivenAnName(2),Comp(0)),
	if(SALDMOUN.TBLOS[3]=6,if(GetAnyKau(0,SALDMOUN.TBLOS[3],SALDMOUN.KAUOS[3]),GivenAnName(2),Comp(0)),
	if(SALDMOUN.TBLOS[4]=6,if(GetAnyKau(0,SALDMOUN.TBLOS[4],SALDMOUN.KAUOS[4]),GivenAnName(2),Comp(0)),
	if(SALDMOUN.TBLOS[5]=6,if(GetAnyKau(0,SALDMOUN.TBLOS[5],SALDMOUN.KAUOS[5]),GivenAnName(2),Comp(0)),
	if(SALDMOUN.TBLOS[6]=6,if(GetAnyKau(0,SALDMOUN.TBLOS[6],SALDMOUN.KAUOS[6]),GivenAnName(2),Comp(0)),
	Comp(0) )))))),

	if(SALDMOUN.TBLOS[1]=402,if(GetAnyKau(0,SALDMOUN.TBLOS[1],SALDMOUN.KAUOS[1]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[2]=402,if(GetAnyKau(0,SALDMOUN.TBLOS[2],SALDMOUN.KAUOS[2]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[3]=402,if(GetAnyKau(0,SALDMOUN.TBLOS[3],SALDMOUN.KAUOS[3]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[4]=402,if(GetAnyKau(0,SALDMOUN.TBLOS[4],SALDMOUN.KAUOS[4]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[5]=402,if(GetAnyKau(0,SALDMOUN.TBLOS[5],SALDMOUN.KAUOS[5]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[6]=402,if(GetAnyKau(0,SALDMOUN.TBLOS[6],SALDMOUN.KAUOS[6]),GivenAnName(1),'Нет аналитики'),
	'Нет аналитики' )))))),

	if(SALDMOUN.TBLOS[1]=403,if(GetAnyKau(0,SALDMOUN.TBLOS[1],SALDMOUN.KAUOS[1]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[2]=403,if(GetAnyKau(0,SALDMOUN.TBLOS[2],SALDMOUN.KAUOS[2]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[3]=403,if(GetAnyKau(0,SALDMOUN.TBLOS[3],SALDMOUN.KAUOS[3]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[4]=403,if(GetAnyKau(0,SALDMOUN.TBLOS[4],SALDMOUN.KAUOS[4]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[5]=403,if(GetAnyKau(0,SALDMOUN.TBLOS[5],SALDMOUN.KAUOS[5]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[6]=403,if(GetAnyKau(0,SALDMOUN.TBLOS[6],SALDMOUN.KAUOS[6]),GivenAnName(1),'Нет аналитики'),
	'Нет аналитики' )))))),

	if(SALDMOUN.TBLOS[1]=415,if(GetAnyKau(0,SALDMOUN.TBLOS[1],SALDMOUN.KAUOS[1]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[2]=415,if(GetAnyKau(0,SALDMOUN.TBLOS[2],SALDMOUN.KAUOS[2]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[3]=415,if(GetAnyKau(0,SALDMOUN.TBLOS[3],SALDMOUN.KAUOS[3]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[4]=415,if(GetAnyKau(0,SALDMOUN.TBLOS[4],SALDMOUN.KAUOS[4]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[5]=415,if(GetAnyKau(0,SALDMOUN.TBLOS[5],SALDMOUN.KAUOS[5]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[6]=415,if(GetAnyKau(0,SALDMOUN.TBLOS[6],SALDMOUN.KAUOS[6]),GivenAnName(1),'Нет аналитики'),
	'Нет аналитики' )))))),

	if(SALDMOUN.TBLOS[1]=KodKauV1,if(GetAnyKau(0,SALDMOUN.TBLOS[1],SALDMOUN.KAUOS[1]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[2]=KodKauV1,if(GetAnyKau(0,SALDMOUN.TBLOS[2],SALDMOUN.KAUOS[2]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[3]=KodKauV1,if(GetAnyKau(0,SALDMOUN.TBLOS[3],SALDMOUN.KAUOS[3]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[4]=KodKauV1,if(GetAnyKau(0,SALDMOUN.TBLOS[4],SALDMOUN.KAUOS[4]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[5]=KodKauV1,if(GetAnyKau(0,SALDMOUN.TBLOS[5],SALDMOUN.KAUOS[5]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[6]=KodKauV1,if(GetAnyKau(0,SALDMOUN.TBLOS[6],SALDMOUN.KAUOS[6]),GivenAnName(1),'Нет аналитики'),
	'Нет аналитики' )))))),

	if(SALDMOUN.TBLOS[1]=KodKauV2,if(GetAnyKau(0,SALDMOUN.TBLOS[1],SALDMOUN.KAUOS[1]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[2]=KodKauV2,if(GetAnyKau(0,SALDMOUN.TBLOS[2],SALDMOUN.KAUOS[2]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[3]=KodKauV2,if(GetAnyKau(0,SALDMOUN.TBLOS[3],SALDMOUN.KAUOS[3]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[4]=KodKauV2,if(GetAnyKau(0,SALDMOUN.TBLOS[4],SALDMOUN.KAUOS[4]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[5]=KodKauV2,if(GetAnyKau(0,SALDMOUN.TBLOS[5],SALDMOUN.KAUOS[5]),GivenAnName(1),'Нет аналитики'),
	if(SALDMOUN.TBLOS[6]=KodKauV2,if(GetAnyKau(0,SALDMOUN.TBLOS[6],SALDMOUN.KAUOS[6]),GivenAnName(1),'Нет аналитики'),
	'Нет аналитики' ))))))

	from
	SALDMOUN,BUHSCHET,PickBuh

	where ((PickBuh.SCHET==SALDMOUN.SCHETO
		and SALDMOUN.SCHETO==BUHSCHET.SCHET
		and SALDMOUN.SUBOSSCH==BUHSCHET.SUBSCH
		))
		and datestart <= SALDMOUN.DATESAL and dateend >= SALDMOUN.DATESAL
	;
Если не понятно, поясню - в определенные поля временной таблицы надо запихать значения соответствующих аналитик, которые в разных счетах могуть быть разного уровня. То есть, например, в аналитике счета 01 организация первого уровня, а в счете 02 организация второго уровня, оба значения (наименование организации в данном случае) должны упасть в поле "Org". KodKauV1 и KodKauV2 - переменные, значения им присваиваются пользователем при задании параметров выгрузки.
Конструкция тоже довольно тяжеловесна, другого пока не придумал.

Добавлено: 26 дек 2007, 23:58
edward_K
так попробуйте
from
SALDMOUN,BUHSCHET,PickBuh

where ((PickBuh.SCHET==SALDMOUN.SCHETO
and datestart <<= SALDMOUN.DATESAL
and dateend >>= SALDMOUN.DATESAL
and SALDMOUN.SCHETO==BUHSCHET.SCHET
and SALDMOUN.SUBOSSCH==BUHSCHET.SUBSCH
))
и вооще - когда уже народ запомнит что за (()) писать нужно в крайнем случае. Даже если нет индекса лучше прописать (noindex) чем как вы, но в даном случае индекс есть - SALDMOUN13.

Добавлено: 27 дек 2007, 12:38
Serges
edward_K писал(а):так попробуйте
from
SALDMOUN,BUHSCHET,PickBuh

where ((PickBuh.SCHET==SALDMOUN.SCHETO
and datestart <<= SALDMOUN.DATESAL
and dateend >>= SALDMOUN.DATESAL
and SALDMOUN.SCHETO==BUHSCHET.SCHET
and SALDMOUN.SUBOSSCH==BUHSCHET.SUBSCH
))
и вооще - когда уже народ запомнит что за (()) писать нужно в крайнем случае. Даже если нет индекса лучше прописать (noindex) чем как вы, но в даном случае индекс есть - SALDMOUN13.
Попробовал, быстрее не стало.
У меня еще за (()) ограничение по плану счетов, когда внес в скобки:

Код: Выделить всё

and _plan == SALDMOUN.cPlansSch(noindex)
стало даже медленнее.

Добавлено: 27 дек 2007, 13:38
edward_K
масло малянное. Код плана счетов у вас уже зашит в scheto
интересно что там у вас еще есть за скобками?

Добавлено: 27 дек 2007, 19:49
Serges
edward_K писал(а):масло малянное. Код плана счетов у вас уже зашит в scheto
интересно что там у вас еще есть за скобками?
Да, действительно, если пользоваться PickBuh, код плана счетов не нужен. А за скобками более ничего нет.
Самый быстродействующий вариант в итоге у меня получился, когда я вынес подцепку

Код: Выделить всё

SALDMOUN.SCHETO==BUHSCHET.SCHET 
and SALDMOUN.SUBOSSCH==BUHSCHET.SUBSCH 
из выборки для временной таблицы в главную вьюху интрефейса, по которой потом и делаю loop.

Добавлено: 28 дек 2007, 15:23
Serges
Это довольно странно, но если применить приведенный в посте №6 код к таблице Oborot, выборка выполняется быстрее в два раза. Это при том, что в OBOROT записей более чем на треть больше, нежели в SALDMOUN :???:

Дело в более оптимизированной работе функции GetAnyKau для таблицы оборотов?

Добавлено: 28 дек 2007, 15:57
Ged
нет, просто она написана на паскале.
а паскаль изначально быстрее випа

Добавлено: 28 дек 2007, 19:57
Serges
Ged писал(а):нет, просто она написана на паскале.
а паскаль изначально быстрее випа
Не понял. Один и тот же запрос с использованием одной функции для разных таблиц выполняется разное время, причём быстрее - для таблицы, где больше записей. При чём тут паскаль?

Добавлено: 29 дек 2007, 11:14
edward_K
Во первых GetAnyKau кэширует значения в вашу память. Во вторых СУБД кэширует. Поэтому для чмстого теста нужно выгнать всех, рестартовать СУБД и попробовать. Для другой таблы повторить. Примерно можно понять и перезаходом в галку.