Для того, чтобы понять суть индексов, необходимо понимать, как происходит поиск данных в таблицах, в зависимости от запросов, которые выполняются.
Поиск по ссылке
Рассмотрим пример запроса
Выбрать Наименование, ИНН ИЗ Справочник.Контрагенты ГДЕ Ссылка = &Ссылка
Для поиска значения полей Наименование и ИНН, СУБД сначала надо найти строку с указанным GUID, например, пусть это будет «c6fbb4e3-85f4-11ea-99e8-94659cbc8da0«.Для этого нам придется пройтись по каждой строке и сравнить значение ключа с требуемым.
Такой проход называется Сканирование (Scan).
Рассмотрим, какие преимущества нам даст сортировка по полю. Если вся таблица отсортирована по колонке GUID, то мы, например, сможем искать следующим образом:
- Делим таблицу на 2 части, далее мы определяем, в какой части находится наше значение – ниже или выше.
- Далее делим на 2 ту часть, которую выделили и т.д.
- Разбиением на 2 мы движемся по всей колонке, пока не выясним, где же наше значение.
Так работает двоичное дерево поиска данных. В СУБД же используется Сбалансированное дерево, которое дает не меньше преимуществ, но его устройство не много сложнее.Более подробно сбалансированное дерево я буду рассматривать позже.
Для понимания преимущества сортировки таблицы достаточно понимать пример с двоичным деревом.

Колонка, по которой отсортирована таблица называется индексированным полем. Сама отсортированная таблица называется индексом. По отсортированной колонке мы можем осуществлять уже поиск (Seek), не сканирование (Scan).
В видео уроке 4-2 я рассказываю устройство сбалансированного дерева на примере блочной структуры хранения данных в СУБД.
Поиск по Наименованию
Рассмотрим пример запроса
Выбрать Ссылка ИЗ Справочник.Контрагенты ГДЕ Наименование = &Наименование
Наша таблица отсортирована по ссылке, поэтому мы можем искать по наименованию только сканированием (перебором всех строк). Для быстрого поиска по конкретному полю, создается дополнительный индекс – это отдельная дополнительная таблица, отсортированная по необходимому полю (утрировано!!).

Рассмотрим пример запроса
Выбрать ИНН ИЗ Справочник.Контрагенты ГДЕ Наименование = &Наименование
В этом случае, нам необходимо сначала найти Ссылку по Наименованию, потом перейти в таблицу с данными, найти строку по ссылке, и только тогда мы получим ИНН. Т.е. нам требуется в 2 раза больше операций ввода вывода I/O, чем в случае, когда мы ищем просто по полной таблице данных.
Какие индексы бывают
- Кластерными и некластерными;
- Покрывающими и непокрывающими;
- Низкоселективными и высокоселективными.
Плюсы и минусы индексов
- Безусловным плюсом является – быстрый поиск данных и ускорение выполнения запросов.
- Минусом является – обслуживание дополнительных таблиц: чем больше индексов, тем дольше делается запись данных.
Данная тема подробнее рассматривается в пакете видео-курса «Секреты 1С: Эксперта» Шаг 2. Занятие 03-01 Справочники + Таблицы БД.
