powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Оптимизация регистра или запроса
4 сообщений из 4, страница 1 из 1
Оптимизация регистра или запроса
    #36742668
supervk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
8.1 дописанное УПП
Есть регистр накопления с видом остатки. Делаю по нему следующий запрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ВЫБРАТЬ
	НЗПОстатки.Подразделение,
	НЗПОстатки.СчетУчета,
	НЗПОстатки.СтатьяЗатрат,
	НЗПОстатки.НоменклатурнаяГруппа,
	НЗПОстатки.Заказ,
	НЗПОстатки.Затрата,
	НЗПОстатки.ХарактеристикаЗатраты,
	НЗПОстатки.СерияЗатраты,
	НЗПОстатки.КоличествоОстаток,
	НЗПОстатки.СтоимостьОстаток
ИЗ
	РегистрНакопления.НезавершенноеПроизводствоБухгалтерскийУчет.Остатки(, Заказ = &ЗаказПокупателя) КАК НЗПОстатки

Запрос выполняется ~20 секунд, по оборотам аналогичный запрос работает ещё дольше. При этом другие запросы, в том числе и аналогичный по регистру ПартииТоваровНаСкладах практически мгновенно. В регистре НезавершенноеПроизводствоБухгалтерскийУчет 7 миллионов записей, в ПартииТоваровНаСкладах примерно столько же записей.

Измерение Заказ, проиндексировано, тестировал в консоли запросов, результат выполнения запроса 2-10 строк в зависимости от заказа.

Очень хочется уменьшить время выполнения запроса. Что можно предпринять? В связи с чем может быть такая разница в скорости выполнения запросов между ПартииТоваровНаСкладах и НезавершенноеПроизводствоБухгалтерскийУчет?
...
Рейтинг: 0 / 0
Оптимизация регистра или запроса
    #36742712
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Измерение Заказ, проиндексировано

а по порядку следования оно какое в регистре? Его бы ближе к началу пододвинуть
...
Рейтинг: 0 / 0
Оптимизация регистра или запроса
    #36742923
supervk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господин ПЖа по порядку следования оно какое в регистре? Его бы ближе к началу пододвинуть
По предварительной оценке дало существенное ускорение.
Ещё потестирую.
Запрос.Текст = "ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Склад,
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.Качество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки";

В данном случае нарушено требование 2. В условии отсутствует отбор по первому полю индекса (Склад). Такой запрос не сможет выполниться оптимально. Для его выполнения серверу СУБД придется перебирать (сканировать) все записи таблицы. Время выполнения этой операции напрямую зависит от количества записей в таблице остатков регистра и может быть очень большим (и будет увеличиваться с ростом количества данных).

Варианты оптимизации:

* Проиндексировать измерение «Номенклатура»
* Поставить измерение «Номенклатура» первым в списке измерений. Будьте внимательны при использовании этого метода. В конфигурации могут присутствовать другие запросы, которые могут замедлиться в результате этой перестановки.
...
Рейтинг: 0 / 0
Оптимизация регистра или запроса
    #36744351
supervk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господин ПЖ>Измерение Заказ, проиндексировано
а по порядку следования оно какое в регистре? Его бы ближе к началу пододвинуть
Да, спасибо, Господин ПЖ, это сильно улучшило ситуацию. Скорость выросла в разы.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Оптимизация регистра или запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]