02.04.2013 09:12
Mr_Vito
 
Задачка:
Нужно посчитать количество чеков за период, в которых присутствует товар из группы
у меня получилось вот так:
Код:
select locid, tree,count(che)
from (
select distinct d2.locid, d.tree, d2.desknum||d2.znum||d2.checknum che
       from sacardclass d, smcard m, smcashcheckitems d2, smcashchecks d3
       where m.idclass=d.id
           and m.article=d2.article
           and d3.printtime BETWEEN TO_DATE('01.01.2013', 'dd.mm.yyyy') and TO_DATE('05.01.2013', 'dd.mm.yyyy')
           and d2.locid=d3.locid
           and d2.desknum=d3.desknum
           and d2.znum=d3.znum
           and d2.checknum=d3.checknum)
group by locid, tree
order by tree, locid
но считает медленно, может как то можно по другому можно сделать?
02.04.2013 10:23
OlegON
 
неплохо бы на "медленно" сразу версию СМ, Oracle и план запроса приводить.
02.04.2013 18:03
vdm
 
В запросе единственное ограничивающее условие - время чеков.
Если на printtime нет индекса (а он есть? c какой версии СМ?) и она не поделена на части по printtime (сомнительно, что это кто-то делает), то полный скан всей smcashchecks обеспечен => время пропорционально размеру...
Часовой пояс GMT +3, время: 08:23.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.