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

Обмеження на використання конструкції "ПОВНЕ ЗОВНІШНЄ З’ЄДНАННЯ" у запитах

1.1. Під час розроблення текстів запитів слід мати на увазі, що під час роботи в клієнт-серверному варіанті, коли як СУБД використовується PostgreSQL, продуктивність виконання запитів із конструкцією ПОВНЕ ЗОВНІШНЄ З’ЄДНАННЯ значно знижується. Особливо це стосується випадків, коли в запиті трапляються дві й більше таких конструкцій.Див. також

Редакційна сцена з двома потоками даних, що проходять через вузьке місце, та ефективнішим маршрутом об’єднання в упорядкований набір.

Див. також

 

Методична рекомендація (корисна порада)

1.1. Під час розроблення текстів запитів слід мати на увазі, що під час роботи в клієнт-серверному варіанті, коли як СУБД використовується PostgreSQL, продуктивність виконання запитів із конструкцією ПОВНЕ ЗОВНІШНЄ З’ЄДНАННЯ значно знижується. Особливо це стосується випадків, коли в запиті трапляються дві й більше таких конструкцій.

Тому в загальному випадку не рекомендується використовувати конструкцію ПОВНЕ ЗОВНІШНЄ З’ЄДНАННЯ у запитах. І в тих випадках, де це можливо, рекомендується переписати текст вихідного запиту без використання цієї конструкції.

Наприклад, наступний запит:

ВИБРАТИ
ЄNULL(ПланПродажів.Номенклатура, ФактичніПродажі.Номенклатура) ЯК Номенклатура,
ЄNULL(ПланПродажів.Сума, 0) ЯК СумаПлан,
ЄNULL(ФактичніПродажі.Сума, 0) ЯК СумаФакт
З
ПланПродажів ЯК ПланПродажів
ПОВНЕ З’ЄДНАННЯ ФактичніПродажі ЯК ФактичніПродажі
ЗА ПланПродажів.Номенклатура = ФактичніПродажі.Номенклатура

може бути реалізований без конструкції ПОВНЕ [ЗОВНІШНЄ] З’ЄДНАННЯ таким чином:

ВИБРАТИ
ПланФактПродажів.Номенклатура ЯК Номенклатура,
СУМА(ПланФактПродажів.СумаПлан) ЯК СумаПлан,
СУМА(ПланФактПродажів.СумаФакт) ЯК СумаФакт
З
(ВИБРАТИ
ПланПродажів.Номенклатура ЯК Номенклатура,
ПланПродажів.Сума ЯК СумаПлан,
0 ЯК СумаФакт
З
ПланПродажів ЯК ПланПродажів

ОБ’ЄДНАТИ ВСІХ

ВИБРАТИ
ФактичніПродажі.Номенклатура,
0,
ФактичніПродажі.Сума
З
ФактичніПродажі ЯК ФактичніПродажі) ЯК ПланФактПродажів

ЗГРУПУВАТИ ЗА
ПланФактПродажів.Номенклатура

1.2. Виняток становлять випадки, коли текст вихідного запиту не може бути переписаний без використання конструкції ПОВНЕ ЗОВНІШНЄ З’ЄДНАННЯ з об’єктивних причин. Слід мати на увазі, що під час виконання цієї конструкції на СУБД PostgreSQL вона автоматично замінюється платформою 1С:Підприємство на еквівалентну, яка може бути виконана в СУБД PostgreSQL. При цьому зберігаються всі атрибути запиту, такі як модифікатори ПЕРШІ, РІЗНІ, а також УПОРЯДКУВАТИ ЗА. У таких випадках не слід "механічно" замінювати конструкцію ПОВНЕ ЗОВНІШНЄ З’ЄДНАННЯ лише з тією метою, щоб позбутися її в тексті запиту.

2. Не допускається одночасно використовувати конструкцію ПОВНЕ З’ЄДНАННЯ і звернення до табличних частин із розділу ВИБРАТИ.

Ця вимога зумовлена особливістю виконання подібних запитів на СУБД PostgreSQL і необхідністю перенесення прикладних рішень на цю СУБД.

Див. також

  • Загальні вимоги до конфігурації
Записатися телефоном