-
Notifications
You must be signed in to change notification settings - Fork 58
Description
Название проверки
Использование запроса, выполняющего соединение с вложенным запросом.
Английское название проверки
??
Правило анализа кода/метаданных
Подписка на соединение модели запроса и проверка что правый источки является подзапросом
Мета-информация (пожалуйста, заполните если знаете):
- Номер стандарта:
655 - Код проверки:
ql-join-to-sub-query - Тип ошибки:
PERFORMANCE - Критичность:
MAJOR - Код ошибки АПК:
494
Параметры проверки
- NA
Текст ошибки
Использование запроса, выполняющего соединение с вложенным запросом.
Пример некорректного решения
- NA
Описание, почему так делать нельзя
1.1 При написании запросов не следует использовать соединения с
вложенными запросами. Следует соединять друг с другом только объекты
метаданных или временные таблицы. Если запрос использует соединения с
вложенными запросами, то его следует переписать с использованием
временных таблиц (не важно с какой стороны соединения находится
вложенный запрос).
Если запрос содержит соединения с вложенными запросами, то это может
привести к следующим негативным последствиям:
- Крайне медленное выполнение запроса при слабой загрузке серверного
оборудования. Замедление запроса может быть очень значительным (до
нескольких порядков). - Нестабильная работа запроса. При некоторых условиях запрос может
работать достаточно быстро, при других - очень медленно. - Значительная разница по времени выполнения запроса на разных СУБД.
- Повышенная чувствительность запроса к актуальности и полноте
статистик. Сразу после полного обновления статистик запрос может
работать быстро, но через некоторое время опять замедлиться.
Пример потенциально опасного запроса, использующего соединение с
вложенным запросом:
ВЫБРАТЬ ...
ИЗ Документ.РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ (
ВЫБРАТЬ ИЗ РегистрСведений.Лимиты
ГДЕ ...
СГРУППИРОВАТЬ ПО ...
) ПО ...
1.1 При написании запросов не следует использовать соединения с
вложенными запросами. Следует соединять друг с другом только объекты
метаданных или временные таблицы. Если запрос использует соединения с
вложенными запросами, то его следует переписать с использованием
временных таблиц (не важно с какой стороны соединения находится
вложенный запрос).
Если запрос содержит соединения с вложенными запросами, то это может
привести к следующим негативным последствиям:
- Крайне медленное выполнение запроса при слабой загрузке серверного
оборудования. Замедление запроса может быть очень значительным (до
нескольких порядков). - Нестабильная работа запроса. При некоторых условиях запрос может
работать достаточно быстро, при других - очень медленно. - Значительная разница по времени выполнения запроса на разных СУБД.
- Повышенная чувствительность запроса к актуальности и полноте
статистик. Сразу после полного обновления статистик запрос может
работать быстро, но через некоторое время опять замедлиться.
Пример потенциально опасного запроса, использующего соединение с
вложенным запросом:
ВЫБРАТЬ ...
ИЗ Документ.РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ (
ВЫБРАТЬ ИЗ РегистрСведений.Лимиты
ГДЕ ...
СГРУППИРОВАТЬ ПО ...
) ПО ...
1.1 При написании запросов не следует использовать соединения с
вложенными запросами. Следует соединять друг с другом только объекты
метаданных или временные таблицы. Если запрос использует соединения с
вложенными запросами, то его следует переписать с использованием
временных таблиц (не важно с какой стороны соединения находится
вложенный запрос).
Если запрос содержит соединения с вложенными запросами, то это может
привести к следующим негативным последствиям:
- Крайне медленное выполнение запроса при слабой загрузке серверного
оборудования. Замедление запроса может быть очень значительным (до
нескольких порядков). - Нестабильная работа запроса. При некоторых условиях запрос может
работать достаточно быстро, при других - очень медленно. - Значительная разница по времени выполнения запроса на разных СУБД.
- Повышенная чувствительность запроса к актуальности и полноте
статистик. Сразу после полного обновления статистик запрос может
работать быстро, но через некоторое время опять замедлиться.
Пример потенциально опасного запроса, использующего соединение с
вложенным запросом:
ВЫБРАТЬ ...
ИЗ Документ.РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ (
ВЫБРАТЬ ИЗ РегистрСведений.Лимиты
ГДЕ ...
СГРУППИРОВАТЬ ПО ...
) ПО ...
Пример корректного решения
- NA