Доброго дня, коллеги!
В рамках курса Ускорение и оптимизация систем на 1С:Предприятие 8.3 + подготовка на 1С:Эксперт детально изучаются причины медленной работы запросов. Обучение требует внимательности и терпения, но это и неудивительно, ведь курс уровня 1С:Эксперт!
Вопрос
Добрый день! Отрицание плохо влияет на производительность запроса. Относится ли это к типам булево? То есть равноценно ли: “Не ЭтоГруппа” и “ЭтоГруппа = Ложь“?
Ответ
Здравствуйте! Этот тот самый редкий случай, когда отрицание не влияет на оптимальность запроса (с такой ситуацией оптимизатор запроса великолепно справляется).
Это пример разобранного вопроса из Мастер-группы курса
Ускорение и оптимизация систем на 1С:Предприятие 8.3 + подготовка на 1С:Эксперт.
Ускорение и оптимизация систем на 1С:Предприятие 8.3 + подготовка на 1С:Эксперт.
Описание курса и примеры видео
А эти конструкции будут равнозначны с точки зрения производительности:
НЕ Поле1 = Значение
и
Поле1 Значение
обычно использую 1-й вариант, чтоб не переключать рус/лат )
Добрый день, Александр!
Видимо под вариантом 2 имелось в виду Поле1<>Значение. Если таблица небольшая – нет никакой разницы и нет смысла тратить время на оптимизацию, если таблица большая, если по столбцу Поле1 есть индекс, или есть составной индекс в котором в ключе индекса первым идёт столбец Поле1 – оба варианта плохи, т.к. препятствуют использованию индекса (ну кроме булевого типа поля). Как можно обойти эту проблему: к таблице присоединить ее-же саму слева (по ключевому полу), указав в присоединяемой таблице условие Поле1 = Значение, а на само соединение условие ГДЕ < ПрисоединяемаяТаблица>.Поле1 ЕСТЬ NULL. Разумеется сделать замеры времени выполнения, предложенный вариант должен выполняться быстрее.