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