Основи оптимізації запитів 1С | Все про програмування на 1С: Підприємство

  1. Загальні правила оптимізації 1С коду
  2. Що вимагає оптимізації в обов'язковому порядку?
  3. Як оптимізувати велику вкладеність підзапитів і їх з'єднання?
  4. Алгоритм оптимізації:
  5. Як оцінити результат оптимізації коду 1С?
  6. Подобається стаття? Підпишіться прямо зараз і отримуйте оновлення на свій E-Mail:

Програма дуже повільно працює, неможливо дочекатися проведення документа або відкриття записи Програма дуже повільно працює, неможливо дочекатися проведення документа або відкриття записи? Рахунки-фактури та акти формуються по годині? Непорядок! Бракує руки майстра 1С. Добре якщо ваш супер програміст просто у відпустці, скоро повернеться і виправить ситуацію, але що робити тим компаніях, штатний розклад яких не передбачає наявності програміста? Тут варіанти два: або продовжувати мучитися в очікуванні проведення кожного документа (чесно кажучи, зовсім не варіант), або запросити програміста по 1С з боку. Чим він може допомогти? Перш за все фахівець проведе аналіз програми на предмет правильності написаного коду та запитів, саме оптимізація 1С коду дозволяє збільшити швидкодію системи.

Загальні правила оптимізації 1С коду

Не потрібно переписувати всю програму або намагатися виправити те, що на перший погляд вам не дуже подобається. Насправді необхідно знайти ті самі горезвісні 20% неефективності, які ведуть до стільки плачевних результатів. Потрібно точно знати, що саме потребує оптимізації в 1С.

Що вимагає оптимізації в обов'язковому порядку?

Існує невеликий перелік проблем, які вимагають виявлення і виправлення в першу чергу, якщо програма повільно працює.

  1. Велика вкладеність підзапитів.

1С зробив дуже зручним функціонал вкладених підзапитів і їх з'єднання. Тому їх часто використовують нераціонально. Вони необхідні, якщо треба зробити поетапно складні обчислення, через це часто можна зустріти такі конструкції:

Але тут не врахований той факт, що оптимізатор сервера, яку б СУБД ви не застосовували, не у всіх випадках має можливість грамотно оптимізувати вказаний варіант запиту. Результатом буде дуже низька швидкодія при його обробці системою. Зверніть увагу, завантаження сервера при обробці в межах норми. Висновок: коди 1С вимагають оптимізації.

Як оптимізувати велику вкладеність підзапитів і їх з'єднання?

Все просто: потрібно виправити сам запит, відмовитися від наявної конструкції, створити декілька самостійних підзапитів, результати їх роботи зафіксувати в базі даних тимчасових таблиць.

Алгоритм оптимізації:

Шукаємо самий проблемний запит? Отримуємо текст запиту на вбудованій мові 1С? Дублюємо ситуації через функціонал Консолі запитів? Аналізуємо текст запиту

Ось такі конструкції потрібно переписати?

Ось такі конструкції потрібно переписати

Потрібно використовувати ефективність тимчасових таблиць, отримаємо наступне:

Потрібно використовувати ефективність тимчасових таблиць, отримаємо наступне:

Створену тимчасову таблицю поміщаємо в основний запит:

Створену тимчасову таблицю поміщаємо в основний запит:

Якщо потрібно виконати об'єднання запитів в єдиний пакетний запит.

Як оцінити результат оптимізації коду 1С?

Перевіряємо швидкість виконання запиту. Якщо і зараз швидкість не відповідає бажаної, продовжуємо аналіз і спрощення.

  1. Виявлені невідповідності між індексами і значущими умовами запитів.

Якщо СУБД повільно виконує запит можливо, що індекси підходять не всім умовам наявних в базі даних запитів. Тому потрібно зіставити індекси і умови. Умови застосовуються в наступних секціях:

Кожному умові відповідає свій індекс. Ідеальний індекс той, для якого в обов'язковому порядку виконуються наступні значущі умови:

  • Індекс містить всі поля, перераховані в умови;
  • Ці поля знаходяться в самому початку індексу;
  • Ці поля йдуть підряд, тобто між ними не «вклинюються» поля, які не беруть участі в условиях запроса;
  • Запит не вибирає інших полів, крім тих, які містяться в самому індексі. Ця вимога не є обов'язковою в тому випадку, якщо обраний індекс є кластерним.
  1. Неприпустиме для швидкодію маніпулювання параметрами віртуальних таблиць.

Приклад неефективного використання:

Оптимізований варіант:

  1. Невикористання «ВИРАЗИТИ» при введенні полів, що мають складовою тип.

Введення «ВИРАЗИТИ» виключає з'єднання таблиць, це просто більше не потрібно.

  1. Зайві поля через символ «.».

Приклад: якщо зробити запит так, то при його виконанні створиться зайве ліве з'єднання з таблицею «Контрагенти».

Потрібно переписати ось так:

Для більш детального вивчення оптимізації запитів і коду 1С, додатково раджу скачати і вивчити ось це керівництво .

Подобається стаття? Підпишіться прямо зараз і отримуйте оновлення на свій E-Mail:

схоже

Версія для друку

Як оптимізувати велику вкладеність підзапитів і їх з'єднання?
Подобається стаття?
Рахунки-фактури та акти формуються по годині?
Добре якщо ваш супер програміст просто у відпустці, скоро повернеться і виправить ситуацію, але що робити тим компаніях, штатний розклад яких не передбачає наявності програміста?
Чим він може допомогти?
Що вимагає оптимізації в обов'язковому порядку?
Як оптимізувати велику вкладеність підзапитів і їх з'єднання?
Отримуємо текст запиту на вбудованій мові 1С?
Дублюємо ситуації через функціонал Консолі запитів?
Як оцінити результат оптимізації коду 1С?