Индексирование в СУБД: Что такое, виды индексов с ПРИМЕРАМИ
⚡ Умное резюме
Индексирование в базах данных — это метод структурирования данных, позволяющий быстро извлекать записи с помощью сопоставления (map).ping Ключ поиска указывает на дисковый адрес записи. Первичные, вторичные, кластерные, многоуровневые и B-деревья индексы различаются по пространству, скорости и сложности обслуживания.

Что такое индексация?
Индексирование Индекс — это метод структурирования данных, позволяющий быстро извлекать записи из файла базы данных. Индекс — это небольшая таблица, имеющая всего два столбца. Первый столбец содержит копию первичного или потенциального ключа таблицы. Второй столбец содержит набор указатели содержит адрес дискового блока, где хранится конкретное значение ключа.
Указатель:
- Принимает в качестве входных данных поисковый ключ.
- Эффективно возвращает коллекцию совпадающих записей.
Без индекса база данных должна сканировать каждую строку, чтобы ответить на запрос. С индексом она сразу переходит к соответствующему блоку, поэтому выбор типа индекса оказывает существенное влияние на производительность.
Виды индексации в СУБД

Индексирование в базе данных определяется на основе ее индексирующих атрибутов. Существует два основных типа методов индексирования:
- Первичное индексирование
- Вторичная индексация
Первичный индекс в СУБД
Первичный индекс — это упорядоченный файл фиксированной длины с двумя полями. Первое поле совпадает с первичным ключом, а второе указывает на конкретный блок данных. В первичном индексе всегда существует однозначное соответствие между записями в индексной таблице.
Основной индекс также подразделяется на два типа:
- Плотный индекс
- Разреженный индекс
Плотный индекс
В плотном индексе для каждого значения поискового ключа в базе данных создается отдельная запись. Это помогает ускорить поиск, но требует больше места для хранения записей индекса. В этом методе записи содержат значение поискового ключа и указывают на реальную запись на диске.
Разреженный индекс
Разреженный индекс — это индексная запись, которая отображается только для некоторых значений в файле. Разреженный индекс помогает решить проблемы, возникающие при использовании плотных индексов. СУБДВ этом методе диапазон столбцов индекса хранит один и тот же адрес блока данных, и когда необходимо получить данные, извлекается именно этот адрес блока.
Разреженный индекс хранит записи индекса только для некоторых значений поискового ключа. Он требует меньше места и меньших затрат на обслуживание при вставке и удалении, но медленнее, чем плотный индекс, при поиске записей.
Ниже приведён пример разреженного индекса базы данных.
Плотный индекс против разреженного индекса
Два основных варианта индекса предполагают противоположные компромиссы, которые суммированы ниже.
| Аспект | Плотный индекс | Разреженный индекс |
|---|---|---|
| Записи | Один на каждый ключ поиска | Один на блок |
| Space | Ещё | Less |
| скорость поиска | Быстрее | Помедленнее |
| Обслуживание | Высокая | Низкая |
Вторичный индекс в СУБД
Вторичный индекс в СУБД может быть создан на основе поля, имеющего уникальное значение для каждой записи, и должен быть потенциальным ключом. Он также известен как некластерный индекс.
Этот двухуровневый метод индексирования баз данных используется для уменьшения размера карты.ping размер первого уровня. Для первого уровня выбран большой диапазон чисел, поэтому картаping Размер всегда остаётся небольшим.
Пример вторичного индекса
Давайте разберемся с вторичным индексированием на примере индекса базы данных. В базе данных банковских счетов данные хранятся последовательно по номеру счета (acc_no), но вам может потребоваться найти все счета в конкретном отделении банка ABC.
Здесь можно создать вторичный индекс для каждого поискового ключа. Запись индекса указывает на сегмент, содержащий указатели на все записи с данным значением поискового ключа.
ClusterИспользование индекса в СУБД
В кластерном индексе в самом индексе хранятся записи, а не указатели. Иногда индекс создается на основе столбцов, не являющихся первичными ключами, значения которых могут быть не уникальными для каждой записи. В такой ситуации можно сгруппировать два или более столбцов, чтобы получить уникальные значения, и создать индекс, который называется кластерным индексом. Это также помогает быстрее идентифицировать запись.
Пример: Предположим, компания наняла множество сотрудников в различные отделы. В этом случае необходимо создать кластерный индекс для всех сотрудников, принадлежащих к одному и тому же отделу.
Они рассматриваются как единый кластер, и индекс указывает на кластер в целом. Здесь Department_no является неуникальным ключом.
Что такое многоуровневый индекс?
Многоуровневое индексирование создается, когда первичный индекс не помещается в памяти. При таком методе индексирования можно уменьшить количество обращений к диску для доступа к любой записи. Записи хранятся на диске в виде последовательного файла, а поверх этого файла создается разреженный индекс.
Индекс B-дерева
B-дерево индекса — наиболее широко используемая структура данных для древовидного индексирования в СУБД. Это многоуровневый формат древовидного индексирования, использующий сбалансированный подход. деревья бинарного поискаВсе листовые узлы B-дерева содержат фактические указатели данных.
Кроме того, все листовые узлы связаны между собой связанным списком, что позволяет B-дереву поддерживать как произвольный, так и последовательный доступ.
- Листовые узлы должны иметь от 2 до 4 значений.
- Длина пути от корня до листа в большинстве случаев одинакова.
- За исключением корневого узла, не являющиеся листовыми, узлы имеют от 3 до 5 дочерних узлов.
- Каждый узел, не являющийся корнем или листом, имеет от n/2 до n дочерних узлов.
Там, где преобладают запросы с точным совпадением, а сканирование диапазонов встречается редко, Хеширования может быть более быстрой альтернативой B-дереву индекса.
Преимущества индексации
Важные преимущества индексирования заключаются в следующем:
- Это помогает сократить общее количество операций ввода-вывода, необходимых для извлечения данных, поэтому вам не нужно обращаться к строке напрямую из таблицы.
- Это обеспечивает пользователям более быстрый поиск и извлечение данных.
- Это позволяет сократить занимаемое табличным пространством место, поскольку нет необходимости хранить ROWID в индексе для каждой связанной строки.
- Данные в листовых узлах уже упорядочены по значению ключа.
Недостатки индексации
К основным недостаткам индексирования относятся:
- Для выполнения индексирования необходим первичный ключ в таблице с уникальным значением.
- Нельзя создать еще один индекс на данных, которые уже организованы таким же образом с помощью индексов.
- Вам не разрешено секционировать таблицу, организованную по индексу.
- Индексирование снижает производительность запросов INSERT, DELETE и UPDATE.





