logo

Індексація в СУБД

  • Індексування використовується для оптимізації продуктивності бази даних шляхом мінімізації кількості звернень до диска, необхідних під час обробки запиту.
  • Індекс є типом структури даних. Він використовується для швидкого пошуку та доступу до даних у таблиці бази даних.

Структура індексу:

Індекси можна створювати за допомогою деяких стовпців бази даних.

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

Методи індексування

СУБД Індексування в СУБД

Впорядковані індекси

Індекси зазвичай сортуються, щоб пришвидшити пошук. Індекси, які сортуються, називаються впорядкованими індексами.

приклад : Припустімо, у нас є таблиця співробітників із тисячами записів, кожна з яких має довжину 10 байтів. Якщо їхні ідентифікатори починаються з 1, 2, 3.... і так далі, і ми повинні шукати студента з ID-543.

  • У випадку бази даних без індексу ми повинні шукати дисковий блок від початку до досягнення 543. СУБД прочитає запис після прочитання 543*10=5430 байт.
  • У випадку індексу ми будемо шукати за допомогою індексів, і СУБД прочитає запис після прочитання 542*2= 1084 байтів, що набагато менше порівняно з попереднім випадком.

Первинний індекс

  • Якщо індекс створюється на основі первинного ключа таблиці, то це називається первинним індексуванням. Ці первинні ключі унікальні для кожного запису та містять відношення 1:1 між записами.
  • Оскільки первинні ключі зберігаються в сортованому порядку, виконання операції пошуку є досить ефективним.
  • Основний індекс можна класифікувати на два типи: щільний індекс і розріджений індекс.

Щільний індекс

  • Щільний індекс містить запис індексу для кожного значення ключа пошуку у файлі даних. Це робить пошук швидшим.
  • У цьому випадку кількість записів в індексній таблиці така сама, як кількість записів у основній таблиці.
  • Йому потрібно більше місця для зберігання самого запису індексу. Записи індексу мають ключ пошуку та вказівник на фактичний запис на диску.
СУБД Індексування в СУБД

Розріджений індекс

  • У файлі даних індексний запис відображається лише для кількох елементів. Кожен елемент вказує на блок.
  • У цьому випадку замість того, щоб вказувати на кожен запис у головній таблиці, індекс вказує на записи в головній таблиці в проміжку.
СУБД Індексування в СУБД

Індекс кластеризації

  • Кластерний індекс можна визначити як упорядкований файл даних. Іноді індекс створюється на стовпцях неосновного ключа, які можуть бути не унікальними для кожного запису.
  • У цьому випадку, щоб швидше ідентифікувати запис, ми згрупуємо два або більше стовпців, щоб отримати унікальне значення та створити з них індекс. Цей метод називається індексом кластеризації.
  • Записи, які мають схожі характеристики, групуються, і для цих груп створюються індекси.

приклад : припустимо, що компанія має кілька співробітників у кожному відділі. Припустімо, ми використовуємо індекс кластеризації, де всі співробітники, які належать до одного Dept_ID, розглядаються в межах одного кластера, а покажчики індексу вказують на кластер загалом. Тут Dept_Id є неунікальним ключем.

СУБД Індексування в СУБД

Попередня схема трохи збиває з пантелику, оскільки один блок диска спільно використовується записами, які належать до іншого кластера. Якщо ми використовуємо окремий дисковий блок для окремих кластерів, то це називається кращою технікою.

СУБД Індексування в СУБД

Вторинний індекс

У розрідженому індексуванні зі збільшенням розміру таблиці зростає і розмір відображення. Ці відображення зазвичай зберігаються в первинній пам'яті, щоб вибірка адреси була швидшою. Потім вторинна пам'ять шукає фактичні дані на основі адреси, отриманої від відображення. Якщо розмір відображення зростає, то отримання самої адреси стає повільнішим. У цьому випадку розріджений індекс не буде ефективним. Щоб подолати цю проблему, введено вторинне індексування.

У вторинному індексуванні, щоб зменшити розмір відображення, вводиться інший рівень індексування. У цьому методі спочатку вибирається величезний діапазон для стовпців, щоб розмір відображення першого рівня став малим. Потім кожен діапазон далі ділиться на менші діапазони. Відображення першого рівня зберігається в первинній пам'яті, тому вибірка адреси відбувається швидше. Відображення другого рівня і фактичні дані зберігаються у вторинній пам'яті (жорсткому диску).

СУБД Індексування в СУБД

Наприклад:

  • Якщо ви хочете знайти на діаграмі запис кидка 111, він шукатиме найвищий запис, який менший або дорівнює 111 в індексі першого рівня. На цьому рівні він отримає 100.
  • Потім на другому рівні індексу знову макс. (111)<= 111 and gets 110. now using the address 110, it goes to data block starts searching each record till 111. < li>
  • Так виконується пошук у цьому методі. Вставлення, оновлення або видалення також виконується таким же чином.