Індексування в СУБД: що таке, типи індексів з ПРИКЛАДАМИ
⚡ Розумний підсумок
Індексування в базі даних – це метод структурування даних, який швидко отримує записи за допомогою карти.ping ключ пошуку за адресою диска його запису. Первинні, вторинні, кластерні, багаторівневі та B-дерева індексують кожен простір, швидкість та обслуговування по-різному.

Що таке індексація?
Індексація — це метод структурування даних, який дозволяє швидко отримувати записи з файлу бази даних. Індекс — це невелика таблиця, що має лише два стовпці. Перший стовпець містить копію первинного або кандидатного ключа таблиці. Другий стовпець містить набір pointers що містить адресу блоку диска, де зберігається це конкретне значення ключа.
Індекс:
- Приймає ключ пошуку як вхідні дані.
- Ефективно повертає колекцію відповідних записів.
Без індексу база даних повинна просканувати кожен рядок, щоб відповісти на запит. З індексом вона переходить безпосередньо до відповідного блоку, тому вибраний тип індексу має великий вплив на продуктивність.
Види індексування в СУБД

Індексування в базі даних визначається на основі її атрибутів індексування. Існує два основних типи методів індексування:
- Первинна індексація
- Вторинна індексація
Первинний індекс в СУБД
Первинний індекс — це впорядкований файл фіксованої довжини з двома полями. Перше поле збігається з первинним ключем, а друге поле вказує на цей конкретний блок даних. У первинному індексі завжди існує зв'язок "один до одного" між записами в таблиці індексу.
Первинний індекс також поділяється на два типи:
- Індекс щільності
- Розріджений індекс
Індекс щільності
У щільному індексі для кожного значення ключа пошуку в базі даних створюється запис. Це допомагає швидше шукати, але потребує більше місця для зберігання записів індексу. У цьому методі записи містять значення ключа пошуку та вказують на реальний запис на диску.
Розріджений індекс
Розріджений індекс – це запис індексу, який відображається лише для деяких значень у файлі. Розріджений індекс допомагає вирішити проблеми щільного індексування в СУБДУ цій техніці діапазон стовпців індексу зберігає однакову адресу блоку даних, і коли потрібно отримати дані, вибирається ця адреса блоку.
Розріджений індекс зберігає записи індексу лише для деяких значень ключів пошуку. Він потребує менше місця та менше накладних витрат на обслуговування для вставки та видалення, але він повільніший за щільний індекс для пошуку записів.
Нижче наведено приклад розрідженого індексу бази даних.
Щільний індекс проти розрідженого індексу
Два основні варіанти індексу мають протилежні компроміси, які коротко описані нижче.
| Аспект | Індекс щільності | Розріджений індекс |
|---|---|---|
| записи | Один на ключ пошуку | Один на блок |
| Простір | більше | Less |
| Швидкість пошуку | Швидше | Повільніше |
| технічне обслуговування | Вищий | Опустіть |
Вторинний індекс в СУБД
Вторинний індекс у СУБД може бути згенерований полем, яке має унікальне значення для кожного запису, і воно має бути кандидатом на ключ. Він також відомий як некластерний індекс.
Цей метод дворівневого індексування бази даних використовується для скорочення картиping розмір першого рівня. Для першого рівня вибрано великий діапазон чисел, тому картаping розмір завжди залишається невеликим.
Приклад вторинного індексу
Давайте розглянемо вторинне індексування на прикладі індексу бази даних. У базі даних банківських рахунків дані зберігаються послідовно за номером_рахунку, але вам може знадобитися знайти всі рахунки в певному відділенні банку ABC.
Тут ви можете мати вторинний індекс для кожного ключа пошуку. Запис індексу вказує на корзину, яка містить вказівники на всі записи з цим конкретним значенням ключа пошуку.
Clusterіндексування в СУБД
У кластерному індексі в індексі зберігаються самі записи, а не вказівники. Іноді індекс створюється на основі стовпців, які не є первинними ключами, і які можуть бути не унікальними для кожного запису. У такій ситуації можна згрупувати два або більше стовпців, щоб отримати унікальні значення та створити індекс, який називається кластерним індексом. Це також допомагає швидше ідентифікувати запис.
приклад: Припустимо, що компанія найняла багато співробітників у різні відділи. У цьому випадку слід створити кластерний індекс для всіх співробітників, які належать до одного відділу.
Вони розглядаються як єдиний кластер, а індекс вказує на кластер в цілому. Тут Department_no – це неунікальний ключ.
Що таке багаторівневий індекс?
Багаторівневе індексування створюється, коли первинний індекс не поміщається в пам'яті. За допомогою цього типу методу індексування можна зменшити кількість звернень до диска для досягнення будь-якого запису. Записи зберігаються на диску як послідовний файл, а поверх цього файлу створюється розріджений індекс.
Індекс B-дерева
B-деревоподібний індекс є найпоширенішою структурою даних для деревоподібного індексування в СУБД. Це багаторівневий формат деревоподібного індексування, який використовує збалансоване... двійкові дерева пошукуУсі кінцеві вузли B-дерева містять фактичні вказівники даних.
Більше того, всі кінцеві вузли пов'язані між собою зв'язним списком, що дозволяє B-дереву підтримувати як випадковий, так і послідовний доступ.
- Кінцеві вузли повинні мати від 2 до 4 значень.
- Кожен шлях від кореня до листка здебільшого однакової довжини.
- Нелистові вузли, окрім кореневого вузла, мають від 3 до 5 дочірніх вузлів.
- Кожен вузол, який не є коренем або листком, має від n/2 до n дітей.
Де домінують пошуки з точними збігами, а сканування діапазону трапляється рідко, хешування може бути швидшою альтернативою індексу B-дерева.
Переваги індексації
Важливими перевагами індексації є:
- Це допомагає зменшити загальну кількість операцій вводу/виводу, необхідних для отримання даних, тому вам не потрібно звертатися до рядка безпосередньо з таблиці.
- Це пропонує користувачам швидший пошук та отримання даних.
- Це може зменшити обсяг табличного простору, оскільки вам не потрібно зберігати ROWID в індексі для кожного зв'язаного рядка.
- Дані в кінцевих вузлах вже впорядковані за значенням ключа.
Недоліки індексації
Важливими недоліками індексації є:
- Для виконання індексації вам потрібен первинний ключ у таблиці з унікальним значенням.
- Ви не можете створити інший індекс на основі даних, які вже організовані за індексом таким самим чином.
- Вам не дозволено розділяти таблицю, організовану за індексом.
- Індексування знижує продуктивність у запитах INSERT, DELETE та UPDATE.





