31.12.2019 Ильдар Мингалеев 6510
Оптимизация запросов в 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С: Управление торговлей»

- Создание прототипа SRM-системы на базе «1С: Управление торговлей»
- Автомат...

Филиал ГлавУпДК при МИД России фирма «Инпредкадры»
Филиал ГлавУпДК при МИД России фирма «Инпредкадры»

Отрасль:
Государственное управление

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

- Расчеты с контрагентами;
- Управленческий учет;
- Формирование отраслев...

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

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

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

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

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

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

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

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

Внедрение 1С:Управление торговлей
ООО «Амперсенд»

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

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

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

Автоматизация учета на базе ПП "1С:Комплексная автоматизация 8" в ЗАО "Крюгер-Гранд"
ЗАО «Крюгер-Гранд»

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

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

- Создание интерфейсов и наборов прав пользователей;
- Отражению временных ...

ООО «Еврорадиаторы»
ООО «Еврорадиаторы»

Отрасль:
1С:ERP 2.4

Внедренное типовое решение:

Специалисты «Кодерлайн» помогли перенести базу из текущей системы «1С:ERP 2.2» ...

ООО "РУКАРД-АУРА"
ООО "РУКАРД-АУРА"

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

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

- Налоговый учет;...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

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

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

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

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

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

Финансы, управленческий учет, мониторинг показателей:
- Налоговый учет...

ООО "СЖД"
ООО "СЖД"

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

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

Расчет зарплаты
Подбор кадров
Кадровый учет
Анализ кадрового состава...

ФГОУ ВПО «Горский государственный аграрный университет»
ФГОУ ВПО «Горский государственный аграрный университет»

Отрасль:
Образование

Внедренное типовое решение:
1С:Колледж ПРОФ

- Управление персоналом и кадровый учет (HRM):
Кадровый учет
Управление об...

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

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

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

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