[ Вопрос дня ] Равноценны ли конструкции отрицания «Не ЭтоГруппа» и «ЭтоГруппа = Ложь» в запросе с точки зрения производительности?

Доброго дня, коллеги!

В рамках курса Ускорение и оптимизация систем на 1С:Предприятие 8.3 + подготовка на 1С:Эксперт детально изучаются причины медленной работы запросов. Обучение требует внимательности и терпения, но это и неудивительно, ведь курс уровня 1С:Эксперт!

Вопрос

Добрый день! Отрицание плохо влияет на производительность запроса. Относится ли это к типам булево? То есть равноценно ли: «Не ЭтоГруппа» и «ЭтоГруппа = Ложь«?

Ответ

Здравствуйте! Этот тот самый редкий случай, когда отрицание не влияет на оптимальность запроса (с такой ситуацией оптимизатор запроса великолепно справляется).

Комментарии / обсуждение (2):

  1. Александр

    А эти конструкции будут равнозначны с точки зрения производительности:
    НЕ Поле1 = Значение
    и
    Поле1 Значение
    обычно использую 1-й вариант, чтоб не переключать рус/лат )

    • Шемякин Александр

      Добрый день, Александр!
      Видимо под вариантом 2 имелось в виду Поле1<>Значение. Если таблица небольшая — нет никакой разницы и нет смысла тратить время на оптимизацию, если таблица большая, если по столбцу Поле1 есть индекс, или есть составной индекс в котором в ключе индекса первым идёт столбец Поле1 — оба варианта плохи, т.к. препятствуют использованию индекса (ну кроме булевого типа поля). Как можно обойти эту проблему: к таблице присоединить ее-же саму слева (по ключевому полу), указав в присоединяемой таблице условие Поле1 = Значение, а на само соединение условие ГДЕ <ПрисоединяемаяТаблица>.Поле1 ЕСТЬ NULL. Разумеется сделать замеры времени выполнения, предложенный вариант должен выполняться быстрее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

 Ознакомлен с условиями Публичной оферты и Пользовательского соглашения
 Согласен на обработку персональных данных (Политика обработки ПДн)