🔖
Разработка и BSL ⭐ Разработка BSL

10 золотых правил оптимизации запросов в 1С:Предприятии 8.3: практический гид для разработчиков

Как избежать взаимных блокировок в СУБД, почему нельзя соединять виртуальные таблицы без фильтра в параметрах, и как индексировать временные таблицы: разбираем на реальных кейсах.

Каждый разработчик 1С рано или поздно сталкивается с замедлением информационной базы при росте количества одновременных сеансов. В этой статье мы обобщили ключевые правила архитектуры высоконагруженных систем на 1С.

Правило №1: Никогда не фильтруйте виртуальные таблицы через секцию ГДЕ

Фильтрация в секции ГДЕ заставляет СУБД сначала рассчитать виртуальную таблицу целиком со всеми итогами, а затем отфильтровать результат. Всегда передавайте условия в параметры виртуальной таблицы!

// ПЛОХО: колоссальная нагрузка на TempDB / память СУБД
ВЫБРАТЬ Номенклатура, КоличествоОстаток
ИЗ РегистрНакопления.ОстаткиНоменклатуры.Остатки() КАК Ост
ГДЕ Ост.Склад = &Склад; // ОШИБКА АРХИТЕКТУРЫ

// ХОРОШО: фильтрация на этапе чтения индекса и среза итогов
ВЫБРАТЬ Номенклатура, КоличествоОстаток
ИЗ РегистрНакопления.ОстаткиНоменклатуры.Остатки(, Склад = &Склад) КАК Ост;

Правило №2: Индексируйте поля соединений во временных таблицах

Если временная таблица содержит более 100 записей и участвует в ЛЕВОМ СОЕДИНЕНИИ, отсутствие индекса приводит к полному сканированию (Table Scan). Указывайте ИНДЕКСИРОВАТЬ ПО при выгрузке данных во временную таблицу.

🚀

Тормозят отчеты или виснут блокировки в 1С?

Проведу детальный анализ технологического журнала, соберу метрики APDEX и устраню узкие места кода с гарантией результата.

Теги статьи: #BSL #Оптимизация #Запросы 1С #СУБД #Индексы
⚡

Нужна помощь эксперта по 1С?

Проведу оптимизацию тяжелых запросов, устраню зависания базы, настрою кластер на Linux / PostgreSQL или разработаю интеграцию под ключ с гарантией SLA.

Обсудить задачу или аудит 1С

Опишите вашу задачу. Я свяжусь с вами в течение 15 минут в Telegram или по телефону для бесплатной экспресс-оценки.

🔒 Конфиденциально. Возможно подписание соглашения о неразглашении (NDA).