подскажите, что нужно, чтобы быстрее работало
Модераторы: m0p3e, edward_K, Модераторы
-
- Постоянный обитатель
- Сообщения: 188
- Зарегистрирован: 04 апр 2009, 15:56
- Откуда: сАРАТОВ
- Контактная информация:
подскажите, что нужно, чтобы быстрее работало
Нужно разбить приход по vidsopr. 502, 600,506 и т.д.
для 502 сделала. А для остальных vidsopr нужно свое view-представление?
Сделала строку 502=katsopr.vidsopr с переменной величиной. Стало работать значительно дольше.
.create view prixod1
from katsopr,spsopr,sporder
where
((
katsopr.nrec==spsopr.csopr
and
spsopr.CMCUSL==katmc.nrec
and
katsopr.CPODRTO==katpodr.nrec
))
and
katpodr.nrec=Sklad_nrec
and
502=katsopr.vidsopr
and
katsopr.dsopr>=begDat
and
katsopr.dsopr<=endDat
and
katmc.nrec=MC_nrec
;
для 502 сделала. А для остальных vidsopr нужно свое view-представление?
Сделала строку 502=katsopr.vidsopr с переменной величиной. Стало работать значительно дольше.
.create view prixod1
from katsopr,spsopr,sporder
where
((
katsopr.nrec==spsopr.csopr
and
spsopr.CMCUSL==katmc.nrec
and
katsopr.CPODRTO==katpodr.nrec
))
and
katpodr.nrec=Sklad_nrec
and
502=katsopr.vidsopr
and
katsopr.dsopr>=begDat
and
katsopr.dsopr<=endDat
and
katmc.nrec=MC_nrec
;
Перечисляете в секции FROM таблицу sporder, а в WHERE никак не связываете - конечно, будет долго. А KATMC, наоборот, есть в связях, но в FROM не указана. Могу такой вариант предложить:
Жёсткие связи иногда полезны для избавления от лишних записей.
Код: Выделить всё
((
begDat <<= katsopr.dopr and
endDat >>= katsopr.dopr and
katsopr.nrec /== spsopr.csopr and (502 = katsopr.vidsopr or 506 = katsopr.vidsopr or 600 = katsopr.vidsopr) and
spsopr.CMCUSL /== katmc.nrec and (MC_nrec = katmc.nrec) and
katsopr.CPODRTO /== katpodr.nrec and (Sklad_nrec = katpodr.nrec)
));
-
- Посетитель
- Сообщения: 43
- Зарегистрирован: 18 ноя 2009, 02:56
- Откуда: Гомель, Республика Беларусь
Попоробуйте так:
.create view prixod1 from katsopr, spsopr, sporder
where (( Word(502)==katsopr.vidsopr and begDat <<= katsopr.dsopr and endDat >>=katsopr.dsopr and Sklad_nrec == katsopr.CPODRTO(noindex)
and katsopr.nrec == spsopr.csopr and spsopr.CMCUSL == katmc.nrec and MC_nrec == katmc.nrec(noindex) ));
.create view prixod1 from katsopr, spsopr, sporder
where (( Word(502)==katsopr.vidsopr and begDat <<= katsopr.dsopr and endDat >>=katsopr.dsopr and Sklad_nrec == katsopr.CPODRTO(noindex)
and katsopr.nrec == spsopr.csopr and spsopr.CMCUSL == katmc.nrec and MC_nrec == katmc.nrec(noindex) ));
-
- Постоянный обитатель
- Сообщения: 188
- Зарегистрирован: 04 апр 2009, 15:56
- Откуда: сАРАТОВ
- Контактная информация:
.create view prixod1
from katsopr, spsopr
where ((
begDat <<= katsopr.dsopr
and endDat >>=katsopr.dsopr
and Sklad_nrec == katsopr.CPODRTO(noindex)
and katsopr.nrec == spsopr.csopr
and MC_nrec==spsopr.CMCUSL
and word(502)==katsopr.vidsopr
))
;
Получилось так. Но если я хочу добавить or word(600)==katsopr.vidsopr, то конструкция выдает ошибку настройки логических таблиц.
from katsopr, spsopr
where ((
begDat <<= katsopr.dsopr
and endDat >>=katsopr.dsopr
and Sklad_nrec == katsopr.CPODRTO(noindex)
and katsopr.nrec == spsopr.csopr
and MC_nrec==spsopr.CMCUSL
and word(502)==katsopr.vidsopr
))
;
Получилось так. Но если я хочу добавить or word(600)==katsopr.vidsopr, то конструкция выдает ошибку настройки логических таблиц.
-
- Местный житель
- Сообщения: 2898
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
сделайте
я обычно объявляю переменную myVidSopr и подставляя туда разные значения пробегаю просто два раза по катсопру.
Код: Выделить всё
....
and ( 502=katsopr.vidsopr OR 600=katsopr.vidsopr)