В длинных пакетных запросах временные таблицы обычно живут до самого конца пакета: УНИЧТОЖИТЬ либо забывают, либо сваливают все в конец «для порядка». Всё это время СУБД держит таблицы в tempdb - на тяжёлых отчётах это лишние гигабайты и лишние секунды. Обработка анализирует пакет и расставляет УНИЧТОЖИТЬ ровно там, где каждая временная таблица использована в последний раз.
Что делает
- Разбирает пакетный запрос: находит все временные таблицы (ПОМЕСТИТЬ/INTO) и место последнего использования каждой.
- Показывает отчёт: где создана, где последний раз использована, был ли УНИЧТОЖИТЬ в исходном тексте.
- Генерирует оптимизированный текст: УНИЧТОЖИТЬ вставлен сразу после последнего использования; существующие УНИЧТОЖИТЬ переставляются на правильные места (повторный прогон ничего не дублирует).
- Таблицы, живущие до последнего пакета, не трогает - менеджер временных таблиц закроется сам, о чём честно пишет в отчёте.
Что учтено в разборе
- Комментарии // и строковые литералы: упоминание таблицы в комментарии или строке использованием не считается.
- Поиск имени по границам слова: ВТ_Товары и ВТ_Товары2 не путаются.
- Регистронезависимость и англоязычный синтаксис (SELECT … INTO, DROP).
- Вложенные подзапросы «В (ВЫБРАТЬ …)» считаются использованием.
Принцип безопасности
Обработка работает только с текстом запроса: к данным, метаданным и СУБД не обращается. Открыли - вставили текст - получили оптимизированный вариант и отчёт.
Зачем это вам
Из практики оптимизации больших баз: в типовом «отчёте на 15 пакетов» половина временных таблиц не уничтожается вовсе, а вторая половина - одним блоком в конце. На базах в сотни гигабайт это заметная нагрузка на tempdb при каждом запуске отчёта. Расстановка УНИЧТОЖИТЬ по месту последнего использования - самая дешёвая оптимизация пакетного запроса: ничего не переписывается, план не меняется, память освобождается раньше.
Совместимость
1С:Предприятие 8.3, управляемые формы, любая конфигурация (обработка не зависит от метаданных). Код открыт.
Что в файле
Внешняя обработка .epf. Вставили пакетный запрос - нажали «Расставить УНИЧТОЖИТЬ» - забрали оптимизированный текст и отчёт по каждой временной таблице.
Другие наши инструменты диагностики 1С
Эта обработка отвечает на один вопрос: как переписать пакетный запрос, чтобы временные таблицы не жили дольше нужного. Соседние вопросы закрывают остальные.
Производительность и объём:
- Трансформатор SQL → 1С - что делает конкретный запрос из профайлера, переведённый в термины метаданных.
- Чек-ап СУБД под 1С - правильно ли база стоит на сервере: 40+ проверок с вердиктом.
- Карта объёмов базы 1С - из чего состоит база и куда ушли гигабайты.
Код и переезд:
- Анализ кода внешних обработок 1С - что лежит в накопившихся .epf: рейтинг по качеству и техдолг.
- Проверка базы перед миграцией на PostgreSQL - предполётный чек-лист, если базу собираются переносить с MS SQL.
Порядок разбора обычно такой: сначала смотрим, из чего база и как она стоит на сервере, потом спускаемся к конкретному запросу.
Проверено на следующих конфигурациях и релизах:
- Розница, редакция 2.3, релизы 2.2.6.18
Вступайте в нашу телеграмм-группу Инфостарт