Использование отрицания Не для условия И в секции "ПО" запроса
Использование НЕ
перед логической конструкцией И
фактически означает выражение с условием ИЛИ
. Не рекомендуется использовать логическое ИЛИ
в условиях соединения, то есть в секции ПО
запроса. Подобные сложные условия могут привести к выбору неоптимального плана и медленной работе запроса.
Простого универсального способа переписать такой запрос без использования ИЛИ не существует. Следует проанализировать решаемую задачу и попытаться найти другой алгоритм ее решения.
Подозрительный код
ИЗ Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕСОЕДИНЕНИЕ Справочник.Прайсы КАК Прайсы
ПО НЕ(Прайсы.НаименованиеТовара = СправочникНоменклатура.Наименование
И Прайсы.АртикулТовара = СправочникНоменклатура.Артикул)
См. также
- Типичные причины неоптимальной работы запросов и методы оптимизации
- Эффективные условия запросов
- правило Использование отрицания Не для условия И в секции ГДЕ запроса
- правило Использование логического "ИЛИ" в секции "ГДЕ" запроса
- правило Использование логического "ИЛИ" в секции "ПО" запроса
Экранирование кода
// sonar:UsingNoWithLogicalAndInOn:off
// sonar:UsingNoWithLogicalAndInOn:on