Имя: Пароль:
1C
 
ОООчень медленно отрабатывает запрос - как оптимизировать?
0 aptomilov
 
25.09.25
14:05
УТ 11 доработанная КТ 2000
Платформа последняя  

Зашел в регистр лкХранилищеАкцизныхМарок так сказать глазами глянут он прям медленно открылся  

запрос  больше  100 секунд отрабатывает




Запрос

"ВЫБРАТЬ
    |    алкХранилищеУпаковокСрезПоследних.Упаковка КАК Упаковка
    |ИЗ
    |    РегистрСведений.алкХранилищеУпаковок.СрезПоследних(, ) КАК алкХранилищеУпаковокСрезПоследних
    |ГДЕ
    |    алкХранилищеУпаковокСрезПоследних.Упаковка = &Штрихкод
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |    алкХранилищеУпаковокСрезПоследних.Упаковка
    |ИЗ
    |    РегистрСведений.алкХранилищеУпаковок.СрезПоследних(, ) КАК алкХранилищеУпаковокСрезПоследних
    |ГДЕ
    |    алкХранилищеУпаковокСрезПоследних.ИерархияУпаковки = &Штрихкод
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |    алкХранилищеАкцизныхМарокСрезПоследних.Упаковка
    |ИЗ
    |    РегистрСведений.алкХранилищеАкцизныхМарок.СрезПоследних(, ) КАК алкХранилищеАкцизныхМарокСрезПоследних
    |ГДЕ
    |    алкХранилищеАкцизныхМарокСрезПоследних.Упаковка = &Штрихкод"
1 vis
 
25.09.25
14:09
Проиндектировать ИерархияУпаковки и Упаковка ?
2 formista2000
 
25.09.25
14:09
А если условие в параметр виртуальной таблицы зафигачить?
3 Мультук
 
гуру
25.09.25
14:14
(0)

Предлагаете измерения и ресурсы этого регистра угадывать ?
4 aptomilov
 
25.09.25
14:16
все это ресурсы  

в параметр идея может ускорится
5 youalex
 
25.09.25
14:20
(4) если ресурсы, то результат может отличаться, т.к.
в ГДЕ - отбор накладывается на уже построенный срез,  а при условиях в параметрах - строит сам срез по этим условиям
6 aptomilov
 
25.09.25
14:21
тут всплыл один нехороший фактор про который я забыл
база тянется по сетке и она файловая
7 Kongo2019
 
25.09.25
14:22
(0) О да. КТ-2000. Тут блин тока страдать. Эти товарищи очень криво все спроектировали. Я спасался токо прямыми запросам к БД.
8 aptomilov
 
25.09.25
14:22
как думаете если сервак поднять шустрее будет ?
9 Kongo2019
 
25.09.25
14:23
(6) А полный алес капут тогда получается.
10 Мультук
 
гуру
25.09.25
14:24
(4) (2)

Родитель -  измерение
Состояние - ресурс

Дата Родитель Состояние
01.01.2025 Папа Бухой
01.03.2025 Папа Трезвый
01.05.2025 Папа Бухой
24.09.2025 Папа Трезвый

а) Так вот запрос срез последних по
СрезПоследних(, Родитель = Папа)
Где Состояние = Бухой


Выдаст
<Нет строк>

б) А вот
СрезПоследних(, Состояние = Бухой)

Выдаст строку
01.05.2025 Папа Бухой

"Вот такая вот херня малята" (с)
11 Kongo2019
 
25.09.25
14:26
(8) Они сам регистр по дебильному спроектировали. Тут надо писать очень точечные запросы, оно еще как-то будет работать. Ну или выкинуть ушедшие марки.
12 СвинТуз
 
25.09.25
14:32
(10)
Старый фокус, только он вроде как по измерению работает и при отборе и при построении виртуально таблицы.
Такое впечатление, что случай не тот.

Ему бы упаковки во временную отобрать.
Потом с этим фильтром во временную.(это не тот случай)
13 СвинТуз
 
25.09.25
14:31
(10)
фокус прокатывает, когда фильтр на созданную виртуалку
по ресурсу получаемому накладывается.

Ария не из того балета? Нет?
14 aptomilov
 
25.09.25
14:30
(11) регистр реально огромный возможно очистка его от ушедших марок  поможет
15 СвинТуз
 
25.09.25
14:37
"ВЫБРАТЬ
    |    алкХранилищеУпаковокСрезПоследних.Упаковка КАК Упаковка
    |ИЗ
    |    РегистрСведений.алкХранилищеУпаковок.СрезПоследних(, Упаковка = &Штрихкод) КАК алкХранилищеУпаковокСрезПоследних
   |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |    алкХранилищеУпаковокСрезПоследних.Упаковка
    |ИЗ
    |    РегистрСведений.алкХранилищеУпаковок.СрезПоследних(, ИерархияУпаковки = &Штрихкод) КАК алкХранилищеУпаковокСрезПоследних
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |    алкХранилищеАкцизныхМарокСрезПоследних.Упаковка
    |ИЗ
    |    РегистрСведений.алкХранилищеАкцизныхМарок.СрезПоследних(, Упаковка = &Штрихкод) КАК алкХранилищеАкцизныхМарокСрезПоследних"
16 СвинТуз
 
25.09.25
14:38
И еще надо смотреть на тип значения того по чему фильтр ставишь. Не составной ли.
17 СвинТуз
 
25.09.25
14:43
Срез последних тут строить не нужно.

Не получается ни даты, ни реквизитов.
Типа просто наличие проверяется.

Странно все выглядит.
18 youalex
 
25.09.25
14:48
ТС, какая структура регистра, ответь на (3)
19 H A D G E H O G s
 
26.09.25
09:09
Переходите на нашу конфу, у нас помарочный учет спроектирован параноидально хорошо в т.ч. по производительности.
20 aka MIK
 
26.09.25
10:48
Ну я б начал с этого

"ВЫБРАТЬ
    |    алкХранилищеУпаковокСрезПоследних.Упаковка КАК Упаковка
    |ИЗ
    |    РегистрСведений.алкХранилищеУпаковок.СрезПоследних(, ) КАК алкХранилищеУпаковокСрезПоследних
    |ГДЕ
    |    алкХранилищеУпаковокСрезПоследних.Упаковка = &Штрихкод
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |    алкХранилищеУпаковокСрезПоследних.Упаковка
    |ИЗ
    |    РегистрСведений.алкХранилищеУпаковок КАК алкХранилищеУпаковокСрезПоследних
    |ГДЕ
    |    алкХранилищеУпаковокСрезПоследних.ИерархияУпаковки = &Штрихкод УПОРЯДОЧИТЬ ПО Период Убыв
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |    алкХранилищеАкцизныхМарокСрезПоследних.Упаковка
    |ИЗ
    |    РегистрСведений.алкХранилищеАкцизныхМарок КАК алкХранилищеАкцизныхМарокСрезПоследних
    |ГДЕ
    |    алкХранилищеАкцизныхМарокСрезПоследних.Упаковка = &Штрихкод УПОРЯДОЧИТЬ ПО Период Убыв"
21 aka MIK
 
26.09.25
10:49
Насчет первого запроса ХЗ, бог миловал, но подозреваю что там тоже ПЕРВЫЕ 1 нужно
22 aka MIK
 
26.09.25
10:51
А вообще скорее всего что-то с индексами, переиндексация, обновление статистики по этим таблицам
23 aptomilov
 
26.09.25
11:32
https://skr.sh/sXn0l4uCa5A

структура регистра
24 aptomilov
 
26.09.25
11:32
(17)

точно мне тоже показалось странным такое
25 aka MIK
 
26.09.25
11:38
(23) без индекса по упаковке не взлетит
26 Прохожий
 
26.09.25
11:45
(10) Ну второй вариант вообще ни о чем
27 Прохожий
 
26.09.25
11:54
(23) Нельзя делать как в (15) Это не измерение. Запрос 15 вернет использовался ли штрихкод уже или нет. Очень специфичный вопрос. Генератор новых штрихкодов пишете?
28 Прохожий
 
26.09.25
11:55
Не понятно при чем тут срез последних в такой задаче
29 Chameleon1980
 
27.09.25
17:00
а включить таблицу среза последних не поможет? как оно там зовется не помню
Разрешить итоги срез последних
30 Маленький Вопросик
 
28.09.25
13:07
В принципе ответ сказали - условие пиши в срезе

алкХранилищеАкцизныхМарок.СрезПослед….

Если возможно, сократи измерения по срезу
Основная теорема систематики: Новые системы плодят новые проблемы.