Использование конструкции "ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ" в запросах (FullOuterJoinQuery)¶
| Тип | Поддерживаются языки  | 
Важность | Включена по умолчанию  | 
Время на исправление (мин)  | 
Теги | 
|---|---|---|---|---|---|
Дефект кода | 
BSL | 
Важный | 
Да | 
10 | 
sqlstandardperformance | 
Описание диагностики¶
Следует избегать использования конструкции ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ в запросах, особенно когда в качестве СУБД используется PostgreSQL. В тех случаях, когда это возможно, необходимо переписать запрос без использования ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ.
Примеры¶
Запрос из примера ниже приведет к повышенной нагрузке при использовании PostgreSQL.
Процедура Тест1()
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Товары.Номенклатура КАК Номенклатура,
                   |    ЕСТЬNULL(ПланПродаж.Сумма, 0) КАК СуммаПлан,
                   |    ЕСТЬNULL(ФактическиеПродажи.Сумма, 0) КАК СуммаФакт
                   |ИЗ
                   |    Товары КАК Товары
                   |        ЛЕВОЕ СОЕДИНЕНИЕ ПланПродаж КАК ПланПродаж
                   |            ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ ФактическиеПродажи КАК ФактическиеПродажи // Диагностика должна сработать здесь
                   |            ПО ПланПродаж.Номенклатура = ФактическиеПродажи.Номенклатура
                   |        ПО Товары.Номенклатура = ПланПродаж.Номенклатура";
КонецПроцедуры
Источники¶
- Ограничение на использование конструкции "ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ" в запросах
 - Руководство администратора, особенности использования PostgreSQL
 
Сниппеты¶
Экранирование кода¶
// BSLLS:FullOuterJoinQuery-off
// BSLLS:FullOuterJoinQuery-on
Параметр конфигурационного файла¶
"FullOuterJoinQuery": false