Запросы
Стандарты 1С
При разработке запросов нужно следовать стандартам 1С:
Дополнительные правила
Излишнее индексирование временных таблиц
На создание индекса нужно время. Это может иметь смысл если создаете очень большую врем. таблицу, а потом много много раз с ней соединяетесь в большом пакетном запросе или передаете МенеджерВремТаблиц дальше и она там активно используется, тогда индексация возможно будет оправданной. Рекомендация использовать индексацию только если явно видите ускорение от создания индекса.
Использование "В" в секции "ГДЕ"
Заменять В() на внутреннее соединение. Тогда мы можем гарантировать использование индексов, мы можем управлять планом запросов, управлять тем, как это будет выполняться. И тем самым гарантировать стабильность – что это, по крайней мере, не деградирует.
Использовать «Выразить» для реквизитов составного типа в запросе
Разыменование ссылочных полей в запросе. Если реквизит в запросе имеет составной тип, то необходимо использовать функцию «Выразить», иначе будет неявные соединения со всеми типами реквизита.
Используйте предопределенные значения в запросах
К примеру, вместо создания параметра передающего пустую ссылку используйте выражение ЗНАЧЕНИЕ(Справочник.ИмяТаблицы.ПустаяСсылка).
Получение излишних данных в запросе
Не выбирать данные в запросе, которые в дальнейшем не будут использоваться.
Сравнение ТИПЗНАЧЕНИЯ()=ТИП() в запросе
Сравнение ТИПЗНАЧЕНИЯ()=ТИП() не используем, преобразуйте в стандартный метод ССЫЛКА.
Учитывать RLS при написании запросов
При включении RLS должны работать все запросы поэтому не забывайте использовать РАЗРЕШЕННЫЕ при обращение к таблицам. Также не забывайте про ограничения на использование описанное в стандарте.
Вычисления полей делать в секции ВЫБРАТЬ
Все вычисляемые поля предварительно рассчитывать в секции «ВЫБРАТЬ», не использовать отборы по вычисляемым полям. Даже когда есть какие-то математические операции, сначала их лучше во временной таблице выбрать и вычислить в секции ВЫБРАТЬ, проиндексировать, если нужно. И потом уже отберем по ним. Это работает быстрее, чем сразу вычислять в условиях, потому что при вычислении в условиях вычисление происходит для каждой строки, что крайне долго.
Излишнее разыменование в условии ГДЕ
Использование более N точек в запросе может привести к понижению производительности.