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