Skip to main content

Запросы

Стандарты 1С

При разработке запросов нужно следовать стандартам 1С:

Дополнительные правила

Излишнее индексирование временных таблиц

На создание индекса нужно время. Это может иметь смысл если создаете очень большую врем. таблицу, а потом много много раз с ней соединяетесь в большом пакетном запросе или передаете МенеджерВремТаблиц дальше и она там активно используется, тогда индексация возможно будет оправданной. Рекомендация использовать индексацию только если явно видите ускорение от создания индекса.

Использование "В" в секции "ГДЕ"

Заменять В() на внутреннее соединение. Тогда мы можем гарантировать использование индексов, мы можем управлять планом запросов, управлять тем, как это будет выполняться. И тем самым гарантировать стабильность – что это, по крайней мере, не деградирует.

Использовать «Выразить» для реквизитов составного типа в запросе

Разыменование ссылочных полей в запросе. Если реквизит в запросе имеет составной тип, то необходимо использовать функцию «Выразить», иначе будет неявные соединения со всеми типами реквизита.

Используйте предопределенные значения в запросах

К примеру, вместо создания параметра передающего пустую ссылку используйте выражение ЗНАЧЕНИЕ(Справочник.ИмяТаблицы.ПустаяСсылка).

Получение излишних данных в запросе

Не выбирать данные в запросе, которые в дальнейшем не будут использоваться.

Сравнение ТИПЗНАЧЕНИЯ()=ТИП() в запросе

Сравнение ТИПЗНАЧЕНИЯ()=ТИП() не используем, преобразуйте в стандартный метод ССЫЛКА.

Учитывать RLS при написании запросов

При включении RLS должны работать все запросы поэтому не забывайте использовать РАЗРЕШЕННЫЕ при обращение к таблицам. Также не забывайте про ограничения на использование описанное в стандарте.

Вычисления полей делать в секции ВЫБРАТЬ

Все вычисляемые поля предварительно рассчитывать в секции «ВЫБРАТЬ», не использовать отборы по вычисляемым полям. Даже когда есть какие-то математические операции, сначала их лучше во временной таблице выбрать и вычислить в секции ВЫБРАТЬ, проиндексировать, если нужно. И потом уже отберем по ним. Это работает быстрее, чем сразу вычислять в условиях, потому что при вычислении в условиях вычисление происходит для каждой строки, что крайне долго.

Излишнее разыменование в условии ГДЕ

Использование более N точек в запросе может привести к понижению производительности.

Материалы