logo
rektorska_pi

20.Індексація в базах даних.

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

Деякі СУБД розширюють можливості індексів введенням можливості створення індексів по стовпцях уявлень  або індексів за виразами.  Наприклад, індекс може бути створений за висловом upper(last_name) і відповідно буде зберігати посилання, ключем до яких буде значення поля last_name у верхньому регістрі. Крім того, індекси можуть бути оголошені як унікальні і як не унікальні. Унікальний індекс реалізує обмеження цілісності на таблиці, виключаючи можливість вставки повторюваних значень.

1. Архітектура

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

Для оптимальної продуктивності запитів індекси зазвичай створюються на тих стовпцях таблиці, які часто використовуються в запитах. Для однієї таблиці може бути створено кілька індексів. Однак збільшення числа індексів уповільнює операції додавання, оновлення, видалення рядків таблиці, оскільки при цьому доводиться оновлювати самі індекси. Крім того, індекси займають додатковий обсяг пам'яті, тому перед створенням індексу слід переконатися, що планований виграш в продуктивності запитів перевищить додаткову витрату ресурсів комп'ютера на супроводження індексу.

Рідкісний індекс ( англ. sparse index ) В базах даних - це файл з послідовністю пар ключів і покажчиків.  Кожен ключ в рідкісному індексі, на відміну від щільного індексу, асоціюється з певним дороговказом на блок в сортувати файли даних. Ідея використання індексів прийшла через те, що сучасні бази даних занадто масивні і не поміщаються в основну пам'ять. Ми зазвичай ділимо дані на блоки і розміщуємо дані в пам'яті поблочно. Проте пошук запису в БД може зайняти багато часу. З іншого боку, файл індексів або блок індексів набагато менше блоку даних і може поміститися в буфері основної пам'яті що збільшує швидкість пошуку запису. Оскільки ключі відсортовані, можна скористатися бінарним пошуком. У кластерних індексах з дубльованими ключами рідкісний індекс вказує на найменший ключ в кожному блоці.