Временные таблицы в запросах 1С

Временную таблицу в запросе можно создать с помощью ключевого слова ПОМЕСТИТЬ:

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

При создании новой временной таблицы она не сохраняется в базе данных. В файловой базе она хранятся в оперативной памяти, в MS SQL Server в специальной служебной базе TempDB.

Временные таблицы можно использовать, чтобы не выбирать данные из какой-то таблицы несколько раз. Один раз выбрали их, поместили во временную таблицу и дальше используем уже временную таблицу.

Также временные таблицы можно использовать для оптимизации работы СУБД. Если вместо временной таблицы использовать вложенный запрос, то оптимизатор не будет знать сколько строк в этой таблице и не сможет оптимизировать план запроса. В случае использования временной таблицы количество строк будет известно, что позволит лучше оптимизировать план запроса.

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

Менеджер временных таблиц

Менеджер временных таблиц позволяет управлять временными таблицами. Один менеджер временных таблиц может управлять несколькими временными таблицами, но имена временных таблиц не должны совпадать.

Уничтожить временную таблицу можно несколькими способами:

  • Использовать метод Закрыть() менеджера временных таблиц
  • Использовать ключевое слово УНИЧТОЖИТЬ в запросе.
  • Все временные таблицы, которыми управляет менеджер временных таблиц будут автоматически удалены при удалении переменной, в которой хранился менеджер временных таблиц. Например, в процедуре был создан новый менеджер временных таблиц, при выходе из этой процедуры все временные таблицы будут автоматически удалены.

Пример уничтожения временной таблицы в запросе:

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

Запрос на создание временной таблицы вернет одну строку с колонкой Количество. В этой колонке будет количество строк во временной таблице.

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

Временные таблицы можно индексировать. Индексирование позволит ускорить операции соединения с временными таблицами, фильтрацию (условие ГДЕ) и т.п. Но на построение индексов тратится время. Поэтому не стоит индексировать все подряд временные таблицы. Например, таблицу в которой три строки точно не нужно индексировать. И не нужно индексировать все поля. Индексировать нужно те поля, которые будут использоваться в условиях отбора (ГДЕ) и в условиях соединения таблиц.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями: