Содержание:
1. Что значит «индексировать»?
2. В каких случаях используется индексированные данные?
3. Работа с методом индексирования
1. Что значит «индексировать»?
В данной статье будет рассмотрена конструкция «ИНДЕКСИРОВАТЬ ПО» в запросах системы 1С:Предприятие 8.3, варианты её использования, ошибки разработчиков и методы индексирования. Все вышеперечисленное будет проиллюстрировано на реальных примерах.
Вначале для качественного понимания конструкции стоит заложить общие понятия. Итак, что значит «индексировать» в 1С? Индекс – это некоторый объект внутри базы данных, который создаётся ради увеличения эффективности отбора (поиска) данных. В базах данных встречаются довольно большие таблицы с тысячами, а то и миллионами строк, которые находятся в случайном порядке. Чтобы осуществить запрос по какому-то критерию и найти нужную строку нужно прождать немало времени, пока строки одна за другой будут перебираться. Формирование индекса происходит по нумерации столбцов в таблице, а также благодаря указателям. Повышение скорости в работе через индексы производится из-за его структуры, которая имеет оптимизацию для поиска (например, сбалансированное дерево (АВЛ-дерево – сбалансированное дерево, балансировка ведётся по высоте и дерево является двоичным, для любой из его вершин высота двух нижестоящих деревьев отличается на 1 или меньше, показано на рисунке ниже). Таким образом имеем, что индексация – это процесс поиска элемента по индексу, который существенно сокращает время запроса.
Рис. 1 Сбалансированное дерево
2. В каких случаях используется индексированные данные?
Разработчики в 1С довольно редко используют конструкцию «ИНДЕКСИРОВАТЬ ПО». Возможно, это связано с тем, что большинство не знает её точного механизма работы. Принцип поиска «ИНДЕКСИРОВАТЬ ПО» стоит начинать использовать именно внутри полей временных таблиц, по этим полям раннее указанная таблица будет искать соединение с другими таблицами из различных баз данных. Как раз такая схема и повысит эффективность и скорость выполнения операции по соединению двух таблиц.
Примечание: стоит учитывать, что построение и написание участка кода, который включает индексированные данные – это тоже затрата времени, поэтому нецелесообразно использовать процедуру «ИНДЕКСАЦИЯ ПО», если строк большое количество (как минимум, должно быть тысяч 5 строк). В случае, когда эта конструкция была использована на маленькое количество строк, то временной эффект будет обратным – время для построения индекса окажется существенно больше, чем последующее быстродействие конструкции.
3. Работа с методом индексирования
Вначале система 1С:Предприятие 8.3 формирует для временной таблицы индекс как и обычно, только именно для временной таблицы.
Приведём пример, как выглядит данная конструкция в коде программы 1С. В нашем случае идёт поиск по базе с физическими лицами, где нас интересует их доход, смотреть скриншот ниже:
Рис. 2 Конструкция метода индексирования в коде
Как видим, требования соблюдены: база с физическими лицами – это временная таблица, при этом база довольно большая, так что время будет сэкономлено.
В данной статье была рассмотрена конструкция «ИНДЕКСИРОВАТЬ ПО» в системе 1С:Предприятие 8.3, принцип индексации, случаи её необходимости и достаточности, а также пример написания данной процедуры внутри кода программы 1С, обоснована её уместность там.
Специалист компании «Кодерлайн»
Айдар Фархутдинов