хочу сделать анализ продаж с фильтрацией по контрагентам, складам и товарам
нужные организации, склады и товары забиваются в соответствующие таблы памяти
(tkatorg, tkatmc, tkatpodr)
как в таком случае правильнее построить лог.таблицу, чтоб быстрее работала
select *
from
tkatpodr, tkatorg, tkatmc, katsopr, spsopr
where
((
word(201)==katsopr.vidsopr
and dat1<<=katsopr.dsopr
and dat2>>=katsopr.dsopr
and word(2)==katsopr.tipsopr (noindex)
and date(1,1,1900)<<=katsopr.dopr (noindex)
and katsopr.nrec == spsopr.csopr
and katsopr.cpodrfrom == tkatpodr.nrec
and katsopr.corg == tkatorg.nrec
and 1 == spsopr.prmc
and spsopr.cmcusl == tKatMc.nrec
));
и при обращениях контролировать на валидность подцепок .... либо :
либо использовать жестские подцепки ?
или вообще корневую не katsopr делать ?
в общем как правильнее делать чтоб быстрее работало?
Подцепки при фильтрации
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 517
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск Новосибирск
- Контактная информация:
Подцепки при фильтрации
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
-
- Посетитель
- Сообщения: 44
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва ЗАО "Март-Консалтинг"
Re: Подцепки при фильтрации
Я бы сделала так:
((
tkatorg.nrec==katsopr.corg and
date(01,01,1900)<<=katsopr.dopr and
word(201)==katsopr.vidsopr(noindex) and
tkatpodr.nrec==katsopr.cpodrfrom(noindex) and
katsopr.nrec==spsopr.csopr and
1==spsopr.prmc and
tKatmc.nrec==spsopr.cmcusl
)) and
katsopr.dsopr>=dat1 and
katsopr.dsopr<=dat2
;
Практика показывает, что быстрее работает фильтр, чем сцепка по неиндексированному полю.
А зачем вообще katsopr.tipsopr? Он же для накладных на продажу (201)всегда 2 или нет?
Может быть быстрее будет вместо
tkatpodr.nrec==katsopr.cpodrfrom(noindex) поставить в конце
katsopr.cpodrfrom=tkatpodr.nrec. Это пробовать надо.
((
tkatorg.nrec==katsopr.corg and
date(01,01,1900)<<=katsopr.dopr and
word(201)==katsopr.vidsopr(noindex) and
tkatpodr.nrec==katsopr.cpodrfrom(noindex) and
katsopr.nrec==spsopr.csopr and
1==spsopr.prmc and
tKatmc.nrec==spsopr.cmcusl
)) and
katsopr.dsopr>=dat1 and
katsopr.dsopr<=dat2
;
Практика показывает, что быстрее работает фильтр, чем сцепка по неиндексированному полю.
А зачем вообще katsopr.tipsopr? Он же для накладных на продажу (201)всегда 2 или нет?
Может быть быстрее будет вместо
tkatpodr.nrec==katsopr.cpodrfrom(noindex) поставить в конце
katsopr.cpodrfrom=tkatpodr.nrec. Это пробовать надо.
-
- Местный житель
- Сообщения: 517
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск Новосибирск
- Контактная информация:
Re: Подцепки при фильтрации
если так делать то корневой будет
tkatorg
т.е. потом когда по логич.таблице ходить то сначала
_loop tkatorg
_loop tkatpodr
потом
_loop katsopr
_loop tkatmc
_loop spsopr
не дольше ли это будет крутиться ?
да плюс к тому разве фильтр по не корневой таблице работать будет ? (корневая tkatorg а фильтр по katsopr)
к тому же сцепка идет по индексированому полю
индекс katsopr02 (vidsopr+dsopr)
на счет katsopr.tipsopr - согласен, убрано
tkatorg
т.е. потом когда по логич.таблице ходить то сначала
_loop tkatorg
_loop tkatpodr
потом
_loop katsopr
_loop tkatmc
_loop spsopr
не дольше ли это будет крутиться ?
да плюс к тому разве фильтр по не корневой таблице работать будет ? (корневая tkatorg а фильтр по katsopr)
к тому же сцепка идет по индексированому полю
индекс katsopr02 (vidsopr+dsopr)
на счет katsopr.tipsopr - согласен, убрано
[url=http://blog.gtalex.ru]Блог GTAlex[/url]