Временная таблица должна содержать индексы
- Индекс следует строить если: 1.1 Большая временная таблица участвует в соединении (не важно, с какой стороны). В индекс следует добавлять поля, участвующие в условии ПО. 1.2 Обращение к временной таблице выполняется в подзапросе конструкции логического оператора В (…). В индекс следует добавлять поля временной таблицы из списка выбора, соответствующие перечисленным с левой стороны логического оператора В (…).
- Маленькие временные таблицы индексировать не нужно (менее 1000 записей).
Неправильно
// Пример 1. Создаем врем. таблицу и делаем из нее выборку по полю "Контрагент". Т.к. врем. таблица не ограничена
// количеством записей (их может быть больше 1000), необходимо создать индекс.
ВЫБРАТЬ
СФПолученная.Контрагент КАК Контрагент,
СФПолученная.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ
ИЗ
Документ.СФПолученная КАК СФПолученная
ГДЕ
СФПолученная.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СФПолученная.Контрагент В(&Контрагенты);
ВЫБРАТЬ
ВТ.Сумма КАК Сумма
ИЗ
ВТ КАК ВТ
ГДЕ
ВТ.Контрагент = &Контрагент_ТД;
// Пример 2. Врем. таблица ВТ содержит не более 500 записей, поэтому ее индексирование будет излишним.
ВЫБРАТЬ ПЕРВЫЕ 500
Сотрудники.Ссылка КАК Сотрудник,
Сотрудники.Организация КАК Организация
ПОМЕСТИТЬ ВТ
ИЗ
Справочник.Сотрудники КАК Сотрудники
ГДЕ
Сотрудники.ВАрхиве
ИНДЕКСИРОВАТЬ ПО
Сотрудник;
ВЫБРАТЬ
ВТ.Сотрудник КАК Сотрудник
ИЗ
ВТ КАК ВТ
ГДЕ
ВТ.Организация = &Организация;
Правильно
// Пример 1. Создаем временную таблицу и выбираем из нее данные. Врем. таблица не ограничена кол-вом записей
// и может быть большого размера, поэтому индексируем по полю Контагент, т.к. выборка из ВТ с отбором по этому полю.
ВЫБРАТЬ
СФПолученная.Контрагент КАК Контрагент,
СФПолученная.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ
ИЗ
Документ.СФПолученная КАК СФПолученная
ГДЕ
СФПолученная.Контрагент В(&Контрагенты)
ИНДЕКСИРОВАТЬ ПО
Контрагент;
ВЫБРАТЬ
ВТ.Сумма КАК Сумма
ИЗ
ВТ КАК ВТ
ГДЕ
ВТ.Контрагент = &Контрагент_Астория;
// Пример 2. Врем. таблица может иметь до 10000 строк, поэтому индексирование необходимо.
ВЫБРАТЬ ПЕРВЫЕ 10000
Сотрудники.Ссылка КАК Сотрудник,
Сотрудники.Организация КАК Организация
ПОМЕСТИТЬ ВТ
ИЗ
Справочник.Сотрудники КАК Сотрудники
ГДЕ
Сотрудники.ВАрхиве
ИНДЕКСИРОВАТЬ ПО
Сотрудник;
ВЫБРАТЬ
ВТ.Сотрудник КАК Сотрудник
ИЗ
ВТ КАК ВТ
ГДЕ
ВТ.Организация = &Организация;
См.