30.08.2021 Айдар Фархутдинов 12952
Оптимизация запросов в 1С

Содержание:

1.       Запросы, предназначенные для отбора внутри виртуальной таблицы

2.       Запросы с составным типом данных

3.       Оптимизация запросов в условиях соединения

4.       Запрос по виртуальным таблицам

5.       Отборы в полях, индексация полей

6.       Логическое «ИЛИ» в условиях отбора в запросе


Приветствую, коллеги! В данной статье речь пойдёт об одном из наиболее эффективных способов увеличения производительности системы 1С – оптимизации запросов. Стоит отметить, что данный процесс имеет весомое значение, когда сдаётся аттестация по эксперту по технологическим вопросам. Далее будет рассказано о том, какие бывают причины того, что запросы работают не оптимально, а также о том, как оптимизировать запросы. Все свои рассуждения я проиллюстрирую на «живых» примерах. Надеюсь, данный материал будет полезен для Вас! 


1.    Запросы, предназначенные для отбора внутри виртуальной таблицы


В данном пункте будут рассмотрены запросы, предназначенные для отборов. Создавать наложение фильтров для реквизитов внутри виртуальной таблицы можно при помощи параметров ВТ. Но ни при каких обстоятельствах не стоит в отборе использовать оператор «ГДЕ», так как это отрицательно влияет на оптимизацию: когда происходит отбор при помощи конструкции «ГДЕ», система получает абсолютно все записи, после чего, уже из всего разнообразия выбирает нужные.


Рассмотрим пример выполнения неправильного запроса, предназначенного для отбора:



Рис. 1 Плохо оптимизированный запрос для отбора


И выполнение аналогичного примера запроса, предназначенного для отбора, но корректно оптимизированного:



Рис. 2 Оптимизированный запрос, предназначенный для отбора  


2.    Запросы с составным типом данных


Далее разберем, как получать данные составного типа, которые находятся внутри запроса при помощи точки. В данном случае запрос работает следующим образом: при помощи точки происходит соединение по левому способу такого количества возможных таблиц, которое соответствует количеству типов внутри поля, которое имеет составной тип.


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


Рассмотрим негативный пример запроса:



Рис. 4 Неоптимизированный запрос с составным типом данных


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


Чтобы оптимизировать запрос, лучше пожертвовать объемом данных, которые хранятся, в пользу более «гибкого» программного кода, который даёт большую производительность. Заменой вышеуказанного запроса станет следующая конструкция:



Рис. 5 Оптимизированный запрос с составным типом данных


Рассмотрим ещё один возможный вариант оптимизации запроса. Нужно добавить информацию в реквизит, который был указан выше, такой информацией является дата:



Рис. 6 Вариант оптимизации запроса в 1С  


3.    Оптимизация запросов в условиях соединения


Рассмотрим, как оптимизировать следующий вид запросов – тех, которые определяют условия соединения. Сразу стоит оговориться, что на оптимизацию не будут положительно влиять какие-угодно подзапросы, так как они замедляют процессы. В подобных ситуациях лучше всего воспользоваться ВТ. Чтобы получить соединение, необходимо воспользоваться объектами метаданных, а также ВТ, а перед этим – провести индексацию по полям, в которых происходит соединение.


Ниже приведён негативный пример с подзапросами:



Рис. 7 Пример подзапросов для определения условий соединения


А вот пример того, как переделать то же, но с учётом оптимизации:



Рис. 8 Оптимизация запроса в условиях соединения  


4.    Запрос по виртуальным таблицам


Рассмотрим ситуацию, в которой нужно провести соединение таблицы, которая является виртуальной, с иными системами. Заранее можно сказать, что работа у такого соединения не будет оптимальной. Чтобы сделать оптимизацию запроса по виртуальной таблице, необходимо провести таблицу, которая является виртуальной, внутрь временной таблицы, но при этом также провести индексацию полей, которые будут соединяться, внутри запроса для временной таблицы. Такое решение вытекает из того, что ВТ обычно располагаются не в одной физической таблице СУБД, а в нескольких. По итогу, чтобы сделать выборку нужно действовать согласно предыдущему пункту, избегая подзапросов.  


5.    Отборы в полях, индексация полей


Одной из наиболее распространённых ошибок является использование условия для тех полей, которые не имеют индексации. Данное действие негативно влияет на оптимизацию запроса, так как СУБД не будет работать оптимально в случае наличия запроса по тем полям, которые не подлежат индексации. Стоит отметить, что даже для временных таблиц нужно проводить индексацию по полям. И каждое условие должно сопоставляться соответствующему индексу. Чтобы определить соответствующий индекс, нужно проверить его на наличие таких требований:


·        в индексе содержаться все поля из условия;

·        все номера полей перечисляются в начале индекса;

·        все вышеуказанные отборы записаны по порядку.


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


6.    Логическое «ИЛИ» в условиях отбора в запросе


Лучше всего избегать использования логической связки «ИЛИ» внутри условий отбора в запросе, так как при выполнении данного оператора загружаются оба объекта/файла, что также негативно сказывается на оптимизации запросов.


Специалист компании «Кодерлайн»

Айдар Фархутдинов

Наши проекты

Внедрение «1С:Зарплата и управление персоналом 8 КОРП» в компании «ПБК»
ООО «Партнер Бухгалтер Консультант»

Отрасль:
Бухгалтерские услуги

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Интеграция продукта с базой данных оперативного учета Axapta;
- Доработка фу...

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

ООО "Смена"
ООО "Смена"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Комплексная автоматизация

Банк и касса
Расчеты с контрагентами
Торговые операции
Взаиморасчеты с...

Автоматизации учета затрат и расчета себестоимости с использованием конфигурации «Koderline: Управление проектами строительства скважин»
ООО «Буровая сервисная компания «ГРАНД»

Отрасль:
Нефтесервис

Внедренное типовое решение:
«Koderline: Управление проектами строительства скважин»

Учет и планирование:
- собственную разработку компании «Кодерлайн» – конф...

Внедрение «1С:Бухгалтерия 8 ПРОФ» в компании «Мостехника»
ООО «Мостехника»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

Документооборот (ECM):
- Учет рабочего времени;
Управление персоналом и ка...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Бухгалтерский учет
- Расчет зарплаты и кадровый учет
- Налоговый учет ...

 ЗАО "Инвестгеосервис" -ДО
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:Документооборот КОРП

- Работа с файлами;
- Делопроизводство;
- Процессы движения документов; ...

Внедрение ПП «1С:Предприятие 8. Аренда и управление недвижимостью на базе "1С:Бухгалтерия 8"» в компании «Бутово Молл»
ООО «Бутово Молл»

Отрасль:
Недвижимость

Внедренное типовое решение:
1С:Аренда и управление недвижимостью на базе «1С:Бухгалтерия 8»

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Оформление зак...

Внедрение ПП "1С:Управление небольшой фирмой 8 ПРОФ" в
ИП Любо Виктория Александровна (ООО «Рекреация»)

Отрасль:
Производство

Внедренное типовое решение:
1С:Управление небольшой фирмой 8 ПРОФ

Осуществлены разработки:
– отчета по спецификации Заказа;
– загрузки сп...

ООО «Мир Аксиомы»
ООО «Мир Аксиомы»

Отрасль:
Аудиторские и консалтинговые услуги

Внедренное типовое решение:
1С:Бухгалтерия КОРП

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

Внедренное типовое решение:
1С:Управление холдингом 1.3.

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную...

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

Внедренное типовое решение:
«1С:Управление корпоративными финансами»

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение