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

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

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

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

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

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

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

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

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


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