1С:Підприємство 8.x: Оптимізація запитів, або ВНУТРЕННЕЕ СОЕДИНЕНИЕ vs ОБЪЕДИНИТЬ ВСЕ

При роботі з великими об'ємами даних у запитах 1С:Підприємство 8.x реляційні з'єднання таблиць суттєво можуть збільшувати час виконання запиту. Формування тимчасової таблиці з двох таблиць зв'язаних по двох ключах може відбуватись до декількох десятків разів довше, чим сумарна вибірка з кожної таблиці зокрема.

Суттєвого пришвидшення можна досягнути, якщо це дозволяє структура даних, заміною внутрішнього (ВНУТРЕННЕЕ СОЕДИНЕНИЕ) з'єднання об'єднанням (ОБЪЕДИНИТЬ ВСЕ) тимчасових таблиць, що є результатами простіших вибірок.

Нижче наводжу приклади двох запитів, що видають одинакові результати.

З використанням ВНУТРЕННЕЕ СОЕДИНЕНИЕ:

ВЫБРАТЬ
ТМЦ.Ссылка КАК Товар,
Цены.Цена,
ЕСТЬNULL(ЦеныСтарые.Цена, Цены.Цена) КАК ЦенаСтарая
ИЗ
Справочник.Номенклатура КАК ТМЦ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦены) КАК Цены
ПО (Цены.Номенклатура = ТМЦ.Ссылка)
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСтарыхЦен, ТипЦен = &ТипЦены) КАК ЦеныСтарые
ПО (ЦеныСтарые.Номенклатура = ТМЦ.Ссылка)
ГДЕ
ТМЦ.Ссылка В ИЕРАРХИИ(&Номенклатура)

З використанням ОБЪЕДИНИТЬ ВСЕ:

ВЫБРАТЬ
Цены.Номенклатура КАК Товар,
МИНИМУМ(Цены.Цена) КАК Цена,
МИНИМУМ(Цены.ЦенаСтарая) КАК ЦенаСтарая
ИЗ
(ВЫБРАТЬ
ТМЦ.Ссылка КАК Номенклатура,
Цены.ТипЦен КАК ТипЦены,
Цены.Цена КАК Цена,
NULL КАК ЦенаСтарая
ИЗ
Справочник.Номенклатура КАК ТМЦ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦены) КАК Цены
ПО ТМЦ.Ссылка = Цены.Номенклатура
ГДЕ
ТМЦ.ЭтоГруппа = ЛОЖЬ
И ТМЦ.Ссылка В ИЕРАРХИИ(&Номенклатура)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ТМЦ.Ссылка,
Цены.ТипЦен,
NULL,
Цены.Цена
ИЗ
Справочник.Номенклатура КАК ТМЦ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСтарыхЦен, ТипЦен = &ТипЦены) КАК Цены
ПО ТМЦ.Ссылка = Цены.Номенклатура
ГДЕ
ТМЦ.ЭтоГруппа = ЛОЖЬ
И ТМЦ.Ссылка В ИЕРАРХИИ(&Номенклатура)) КАК Цены
СГРУППИРОВАТЬ ПО
Цены.Номенклатура

Другий запит виконується значно (у десятки разів) швидше.

Додати новий коментар

Фото Капча
Введіть символи з картинки.