|
Розница 2.3. От чего зависит скорость выполнения запроса по остаткам номенклатуры | ☑ | ||
---|---|---|---|---|
0
slafor
22.05.21
✎
21:38
|
В Рознице 2.3 есть самописный отчет по количеству позиций номенклатуры в разрезе групп. То есть, допустим, в группе "Стройматериалы" - столько-то позиций (элементов) в справочнике, в группе "Электрика" - столько-то, ну и т.д.
Делается запрос по справочнику Номенклатуры, а потом - другой запрос, по остаткам различных элементов номенклатуры на определенную дату, причем тоже в разрезе групп. Это - две временных таблицы, потом берем данные одной из них - из справочника, и делаем левое соединение с временной таблицы по остаткам. И все. Так вот, почему-то получается так, что запрос выполняется очень долго при получении данных за Январь 2021 г., где-то порядка 15 минут. Зато за Декабрь 2020 г. - всего 1 минуту. И что самое интересно, если сначала выполнить запрос за Декабрь 2020 г. - то и за Январь 2021 г. он тоже будет выполняться порядка минуты. Прямо чудеса какие-то. Итоги в РН Товары на складах (из которого берутся остатки) рассчитаны правильно, на апрель 2021 г.. Все условия в самом запросе - в условиях виртуальной таблицы, а не в "ГДЕ", как и положено. Индексацию в ВТ не делаю, да и, как я понял, от этого не сильно зависит - за Декабрь 2020 г. и без нее запрос "летает". Сейчас перезапустил базу - за Январь 2021 г. опять меньше минуты. Но проблема возникла не сегодня, и уверен, что завтра опять повторится "долгое ожидание" результата. Почему такое возможно? |
|||
1
piter3
22.05.21
✎
22:11
|
Итоги, обслуживания может треба база
|
|||
2
slafor
22.05.21
✎
22:15
|
(1) Итоги установлены и рассчитаны на конец апреля 2021 г. А что еще нужно сделать?
Да, база файловая, но все манипуляции я провожу на копии - она тоже, соответственно, файловая |
|||
3
slafor
22.05.21
✎
22:16
|
(2) + Больше меня никто в эту копию не заходит. Никогда.
|
|||
4
piter3
22.05.21
✎
22:16
|
(2) текст запроса секретен?
|
|||
5
slafor
22.05.21
✎
22:24
|
Да нет...
ВЫБРАТЬ Номенклатура.Родитель КАК Родитель, СУММА(1) КАК Всего, Номенклатура.Ссылка КАК Ссылка ПОМЕСТИТЬ Ном ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ СГРУППИРОВАТЬ ПО Номенклатура.Родитель, Номенклатура.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК НоменклатураСсылка, ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК НоменклатураРодитель, СУММА(1) КАК ВНаличии ПОМЕСТИТЬ Ост ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Номенклатура.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК ТоварыНаСкладахОстатки СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстатки.Номенклатура.Родитель, ТоварыНаСкладахОстатки.Номенклатура.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Ном.Родитель КАК Родитель, СУММА(Ном.Всего) КАК Всего, ЕСТЬNULL(СУММА(Ост.ВНаличии), 0) КАК ВНаличии ИЗ Ном КАК Ном ЛЕВОЕ СОЕДИНЕНИЕ Ост КАК Ост ПО Ном.Ссылка = Ост.НоменклатураСсылка СГРУППИРОВАТЬ ПО Ном.Родитель |
|||
6
slafor
22.05.21
✎
22:26
|
В ВТ Ном немного не дописал:
после ГДЕ там следует Номенклатура.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) |
|||
7
slafor
22.05.21
✎
22:27
|
Это значит, что я не беру элементы первого уровня )
|
|||
8
piter3
22.05.21
✎
22:32
|
По файловой не подскажу, а что мешает выбрать остатки, а уж потом по родителю играться
|
|||
9
piter3
22.05.21
✎
22:34
|
По иерархии что-то было, не могу вспомнить, в ней дело скорее всего
|
|||
10
acanta
22.05.21
✎
22:43
|
А зачем выбирать то, что не требуется для итогового запроса?
|
|||
11
piter3
22.05.21
✎
22:58
|
Ладно, а какая задача?
|
|||
12
slafor
22.05.21
✎
23:06
|
(8) Мне нужно, чтобы в результат попали ВСЕ элементы из справочника Номенклатуры, за исключением элементов первого уровня. Есть они в остатках или нет - не важно.
|
|||
13
hhhh
22.05.21
✎
23:12
|
(7) там важен параметр Дата, если начало месяца, например 1 декабря или 1 января, причем на 0ч, 0мин и 0сек, то остатки берутся из таблицы итогов - это быстро. А если например дата в середине месяца, то остаток рассчитывается по реальной таблице регистра - это очень долго.
|
|||
14
slafor
23.05.21
✎
00:10
|
(13) То есть если я буду ставить не конец месяца, как обычно, а начало следующего 0:00:00, то остатки будут браться очень быстро?
Спасибо, попробую. Хотя... за декабрь я ведь тоже ставлю концом месяца, а расчеты идут быстро ) |
|||
15
Маленький Вопросик
23.05.21
✎
09:20
|
(0) от ДНК )))))
|
|||
16
Garykom
гуру
23.05.21
✎
10:59
|
(0) например антивирус тупо шерстит если в исключения не добавил
|
|||
17
slafor
23.05.21
✎
13:09
|
(16) Может быть, и антивирус. Но как узнать, есть он или нет...
Дело в том, что я работаю в этой копии удаленно, через VPN - RDP. А сегодня запустил базу у себя на компе - вообще задержек нет. |
|||
18
slafor
23.05.21
✎
19:26
|
(17) Вот написал и как себе назло )
Теперь долго грузится везде, и на моем компе, и по удаленному доступу... Причем вне зависимости от даты. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |