Що таке «індекс» в РБД, для чого потрібно індексування
І ндекс є засіб прискорення пошуку запи-сей в таблиці, а також інших операцій, що використовують пошук: витяг, модифікацію, сортування і т. Д. Таблицю, для якої використовують індекс, називають індексованої.
Індекс містить відсортовану по колонці або неяк-ким колонкам інформацію і вказує на рядки, в яких зберігається конкретне значення колонки.
У деяких системах індекс інфляції-си зберігаються в індексних файлах окремо від табличних.
Рішення проблеми організації фізичного доступу до ін-формації залежить в основному від наступних факторів:
- виду вмісту в поле ключа записів індексного файлу;
- типу використовуваних посилань (покажчиків) на запис основ-ної таблиці;
- методу пошуку потрібних записів.
Індексний файл - це зберігається файл особливого типу, в кото-ром кожен запис складається з двох значень: дане і RID-покажчик.
На практиці найчастіше використовуються два методи пошуку: послідовний і бінарний (заснований на поділі інтервалу пошуку навпіл - див. Приклад нижче).
Пошук необхідних записів при індексації може происхо-дить по однорівневої або дворівневою схемою індексації.
Мал. 5.1. Однорівнева схема індексації
У кожному блоці записи розташовуються в порядку зростання значення ключа (або згортки).
Старшим ключем кожного блоку є ключ його останнього запису.
Якщо в індексному файлі зберігаються хеш-коди ключових полів індексованої таблиці, то алгоритм пошуку потрібної запи-сі включає три етапи:
1. Освіта згортки значення ключового поля шуканої записи.
2. Пошук в індексному файлі записи про блок, значення першо-го поля якого більше отриманої згортки (це гаран-тирует знаходження шуканої згортки в даному блоці).
У дворівневою схемою ключі (згортки) записів відокремлені від вмісту записів (рис. 5.2).
В даному випадку індекс основної таблиці розподілений по сукупності файлів: одному файлу головного індексу і безлічі файлів з блоками ключів.
На практиці при створенні індексу для деякої таблиці бази даних вказують поле таблиці, яке вимагає ін-дексаціі. Ключові поля таблиці в багатьох СУБД індекси-ються автоматично. Індексні файли, створювані по ключових полях таблиці, називаються файлами первинних індексів.
Якщо таблиця проіндексована, то всі команди, пов'язані з рухом таблиці (на наступний запис, в початок, в кінець) переміщають покажчик запису до відповідного з індексом, а не з фізичним розташуванням у вихідній таблиці.