#std777

Использование временных таблиц

1.

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

Их можно применять и для других целей (например, для улучшения архитектуры кода), но это в некоторых сценариях может снижать производительность.

2.

Есть ситуации, когда временные таблицы не следует создавать или их создание нужно минимизировать.

2.1.

Не следует создавать временные таблицы с очень большим объемом данных (сотни тысяч записей). Это может приводить к существенному замедлению при записи и к исчерпанию свободного места на диске.

Если алгоритму нужен большой объем данных, обработку следует выполнять порциями.

2.2.

Максимально ограничивайте объем данных, выбираемых во временную таблицу: помещайте только то, что действительно нужно последующим запросам.

2.3.

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

2.4.

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

2.5.

Не копируйте одну временную таблицу в другую только ради переименования. Вместо этого передавайте имя таблицы.

3.

Временные таблицы следует индексировать, когда это дает прирост производительности.

3.1.

Индекс следует строить в случаях:

3.1.1.

Большая временная таблица участвует в соединении (с любой стороны). В индекс включайте поля, используемые в условии ПО.

3.1.2.

Есть обращение к временной таблице в подзапросе конструкции логического оператора В (...).

В индекс включайте поля временной таблицы из списка выбора, соответствующие полям слева от В (...).

См. также: #std652: Несоответствие индексов и условий запроса.

3.2.

Маленькие временные таблицы (менее 1000 записей) индексировать не нужно.

3.3.

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

См. также
Источник

https://its.1c.ru/db/v8std#content:777