Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1C_BAD_EXECUTION_PLAN 1С:Предприятие и СУБД

Анализ планов выполнения запросов (Explain / Showplan) для 1С

Обновлено: 26.08.2026 · Официальная документация ↗
  • Запрос в 1С выполняется непредсказуемо долго при одинаковом объеме данных.
  • Необходимость определить, использует ли СУБД созданные индексы конфигурации.
  • Подозрение на неоптимальный выбор типа соединения (Hash Join, Merge Join, Nested Loops).

1. Получение плана запроса 1С в MS SQL Server

Включите сбор планов в SQL Server Management Studio (SSMS):

SET STATISTICS XML ON;
SET STATISTICS TIME ON;
SET STATISTICS IO ON;
-- Вставьте сгенерированный 1С SQL-запрос
SELECT ... 
SET STATISTICS XML OFF;

2. Получение плана запроса 1С в PostgreSQL

EXPLAIN (ANALYZE, BUFFERS, SETTINGS, VERBOSE)
SELECT ... ;

3. Критические операторы в планах выполнения, требующие внимания

  • Table Scan / Clustered Index Scan: Полное чтение всей таблицы (отсутствует подходящий индекс по полям фильтра).
  • Index Seek: Идеальная операция точечного поиска по индексу.
  • Key Lookup (Bookmark Lookup): СУБД нашла строку в некластерном индексе, но вынуждена обращаться к основной таблице за недостающими полями. Решение: сделать индекс покрывающим.
  • Sort: Явная сортировка в памяти или на диске. Решение: добавить поля сортировки в индекс.
  • Hash Match / Hash Join: Соединение больших объемов несортированных данных.
💡 Практика специалистов: Никогда не оптимизируйте запрос в 1С «вслепую» без анализа плана выполнения. Изменение порядка условий в 1С не влияет на SQL, если оптимизатор СУБД строит один и тот же план.

Частые вопросы (FAQ)

Что такое Actual Number of Rows vs Estimated Number of Rows?

Это сравнение ожидаемого оптимизатором количества строк с фактическим. Расхождение в 10-100+ раз говорит о неактуальной статистике базы данных.

Как найти текст SQL-запроса, который сформировала платформа 1С?

Текст запроса можно получить через Технологический журнал (события DBMSSQL / DBPOSTGRS), Extended Events или с помощью встроенного инструмента 'Консоль запросов' с функцией показа SQL.

Чем опасен оператор Key Lookup в MS SQL?

При большом количестве строк Key Lookup генерирует лавинообразное число случайных чтений диска (I/O), превращая быстрый индексный поиск в тяжелую операцию.

Что означает Cost % в плане выполнения?

Это расчетная относительная стоимость оператора в процентах от общего веса запроса. Обращайте внимание на операторы с максимальным Cost (50-90%).

Полезные материалы
Рекомендуем