Проблема с большими объемами >50000 строк в таблице значений

Проблема: в некоторых случаях при работе с большими (более 50000 строк таблицами значения) может наблюдаться проблема в производительности присвоение значении ячейкам таблицы значений.

Пример: есть код

Замер производительности участка кода:

Обратите внимание на выделенные замеры. Время выполнения этих строк кода почти в 500 раз длительнее чем выполнение аналогичных строк кода.

Причина: замедление вызвано наличием индексов по указанным колонкам таблицы значений. Т.е., подобный код:

Важно: влияние замедления зависит от размера таблицы значений (чем больше строк тем сильнее замедление).

Проблема проверялась на версиях платформы 8.3.14.1779, 8.3.18.1520

Решение: универсального решения нет. Может помочь следующее:

  1. Замена на метод “ЗаполнитьЗначениеСвойств” (метод работает быстрее даже если присваивает сразу несколько значений в индексированных колонках, см демонстрацию в тестовой обработке). Например, на платформе 8.3.18 если в таблице значений 50 тыс строк, то присвоение значения в проиндексированной колонке  50 тыс раз занимает 13.8 сек, если же использовать метод ЗаполнитьЗначенияСвойств — менее 1 сек. Однако важно использовать метод с пустым 3 параметром (см замер из тестовой обработки ниже), в случае если 3 параметром явно указать имя колонки — то эффекта не будет;
  2. Использования соответствия вместо таблицы значений;
  3. Добавление индекса после наполнения таблицы (если позволяет алгоритм)

Смотрите также http://www.gilev.ru/kurs/