31.12.2019 Ильдар Мингалеев 6546
Оптимизация запросов в 1С

Содержание:

1.       Общие рекомендации для запросов СУБД

2.       Рекомендации для работы с запросами в 1С

3.       Примеры оптимизации запросов.

   

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

 

В клиент-серверной архитектуре платформа 1С транслирует запрос, созданный разработчиком в запрос к базе данных на языке запросов SQL. Оптимизатор запросов СУБД (а язык запросов 1С поддерживает работу со следующими СУБД: MSSQLServer, PostgreSQL, IBMDB2, Oracle Database) строит план запроса. План запроса можно посмотреть средствами самой СУБД.  

 

1.    Общие рекомендации для запросов СУБД:

 

·         В запросе нужно стремиться выбирать только необходимые поля.

·         Пакетирование запросов (использование временных таблиц) повышает их читаемость. Объемный запрос может привести к выбору неоптимального плана оптимизатором запросов (на стороне программы СУБД).

·         В соединении (двух таблиц) не следует использовать подзапросы.

·         Не следует использовать в одном запросе много таблиц, поскольку оптимизатор запроса может выбрать неоптимальный план.

·         Никогда не использовать запросы в цикле.

·         Отсутствие значений параметров в виртуальной таблице или использование вместо них условия «ГДЕ»

·         Отсутствие проверки на NULL

·         Не получать данные через точку от полей ссылочного типа.

    

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

 

2.    Рекомендации для работы с запросами в 1С

 

Вот некоторые рекомендации, необходимые для оптимизации запросов:

Когда запрос становится большим, используются временные таблицы.

 

Если в условии есть индексированный столбец, то лучше комбинировать равенства и неравенства. Например, лучше писать значение_колонки>= 8, чем значение_колонки>7. Так как в последнем случае сначала будет найдено число 7, а затем будет производиться поиск следующих значений. В первом случае поиск сразу начинается с 8.

 

При обращении к индексу по нескольким столбцам необязательно указывать в запросе каждый столбец. Но начинать надо с первого столбца и продолжать в порядке индексации. Использование индекса прекращается при первом пропуске столбца.

 

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

    

Использование индексов имеет некоторые недостатки. На них расходуются следующие ресурсы:

 

·         Индекс сам по себе занимает место (дополнительно к тому, что занимает таблица).

·         При извлечении из таблицы большого числа строк использование индекса – только потеря времени. Это несколько замедлит исполнение.

·         Разработчику необходимо решить, использовать ли индекс в зависимости от следующих моментов.

·         Как часто будет выполняться запрос к таблице и как часто она будет обновляться.

·         Насколько медленно выполняется запрос.

·         Что в данном случае важно: время исполнения или место на диске. Обычно время более ценно.

·         Как часто поля, которые будут индексироваться, будут использоваться в условиях запроса.

·         Как часто поля будут использоваться в условиях соединения. Соединения в основном выполняются медленнее, чем другие виды запросов, и выигрыш во времени получается больше. 

 

3.    Примеры оптимизации запросов.













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


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

 

В случае работы в клиент-серверной архитектуре, например, с СУБД MSSQL можно настроить технологический журнал с определенными фильтрами, выявляющими наиболее длительные запросы.

 

Также рекомендуется настроить очистку процедурного КЭША и процедуру дефрагментации индекса.

В процессе работы с базой данных происходит эффект фрагментации индексов.

Рекомендуется выполнять дефрагментацию индексов не реже одного раза в неделю.

   

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

Ильдар Мингалеев.


Наши проекты

Автоматизация торгового учета на базе "1С:Управление торговлей"
ООО «ТЕЛЕВЕС РУСС»

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

Внедренное типовое решение:
1С:Управление торговлей

- Управление складскими запасами;
- Оформление заказов покупателей;
- Пла...

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

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

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

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

ПАО «АрселорМиттал Кривой Рог»
ПАО «АрселорМиттал Кривой Рог»

Отрасль:
Металлургическая промышленность

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

- Кадровый учет
- Расчет зарплаты
- Регламентированная отчетность
- Уч...

АО «Вертолетная сервисная компания»
АО «Вертолетная сервисная компания»

Отрасль:
МТО эксплуатации вертолетной техники

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

- Консультации по сложным вопросам налогового и бухгалтерского учета;
- Ра...

ООО «Аэроэкспресс»
ООО «Аэроэкспресс»

Отрасль:

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

· Планирование закупок · Управление закупочными процедурами, включая 223 ФЗ ...

Группа компаний ТМ «Дружба народов»
Группа компаний ТМ «Дружба народов»

Отрасль:
Пищевая промышленность

Внедренное типовое решение:
1С:ERP Управление предприятием 2.1

- Переход на новый релиз 2.1 программы «1С:ERP Управление предприятием»
- Разра...

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

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

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

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

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:ТОИР Управление ремонтами и обслуживанием оборудования

Мониторинг и анализ ключевых показателей деятельности предприятия Управле...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

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

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Различная отраслевая специфика:
- Переработка давальческого сырья
- Уче...

Автоматизация подсистемы учета взаиморасчетов с агентами и интернет-магазинами на базе «1С:Управление холдингом 8»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

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

– Оформление заказов поставщикам;
– Управление отношениями с поставщика...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

Внедренное типовое решение:
«1С:ERP Управление предприятием 2.1».

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходо...

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

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

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

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

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

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

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