Анализ планов выполнения запросов (Explain / Showplan) для 1С
- Запрос в 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: Соединение больших объемов несортированных данных.
Частые вопросы (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%).