індексування даних

Мал. 4.3. приклад індексу

Індекс зазвичай зберігається в окремому файлі або окремої області па-мяти. Порожні значення атрибутів (NULL) не індексуються.

Індексування використовується для прискорення доступу до записів за значенням ключа і не впливає на розміщення даних цієї таблиці. Прискорення пошуку даних через індекс забезпечується за рахунок:

  1. упорядкування значень індексованого атрибута. Це дозволяє про-сматривать в середньому половину індексу при лінійному пошуку;
  2. індекс займає менше сторінок пам'яті, ніж сама таблиця, тому система витрачає менше часу на читання індексу, ніж на читання таблиці.

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

Примітка. в реальних СУБД існують методи оптимізації переиндексации. Напри-заходів, при виконанні пакетної операції модифікації БД оновлення індексів мо-же відбуватися один раз після внесення всіх змін в дані.

Індекс називається первинним. якщо кожному значенню індексу відповідає унікальне значення ключа. Індекс по ключу, допускає дублікати значень, називається вторинним. Більшість СУБД автоматично будують індекс по первинному ключу і по унікальним стовпчиках. Ці індекси використовуються для перевірки обмеження цілісності unique (унікальність).

Для кожної таблиці можна одночасно мати кілька первинних і вторинних індексів, що також відноситься до переваг індексування.

Розрізняють індекси по одному полю і за кількома (складові). Складовою індекс включає два або більше стовпчика однієї таблиці (рис. 4.4). Послідовність входження стовпців в індекс визначається при його створенні. З прикладу на рис. 4.4 видно, що дані в індексі відсортовані по на одну колонку (ID), всередині групи з однаковими значеннями ID - відсортовані по дві колонки (EDATE), а всередині групи з однаковими значеннями ID і EDATE - по третьому стовпці (CODE).

Схожі статті