• несоставной – ключ индекса состоит только из одного поля записи;
•
составной – ключ индекса состоит из нескольких полей записи, при этом
сортировка ключа индекса выполняется в следующем виде: основной
порядок сортировки задает первое поле ключа, дополнительный порядок
сортировки (сортировка в группе) задает второе поле ключа, и т.п;
составной индекс по полям записи (f1,f2,f3,…,fn) может использоваться
для поиска по полю f1 либо по комбинациям полей (f1, f2), (f1, f2, f3), (f1,
f2, f3, f4), …, (f1,f2,f3,…,fn-1), (f1,f2,f3,…,fn) – т.е. один составной индекс
может обслуживать ряд запросов, но поля используемые при этом
должны располагаться с начала ключа индекса (т.к. они зададут порядок
сортировки записей индекса) и без разрывов; для N полей записи
максимальное число индексов определяется как
)!!*(
!
nNn
N
C
n
N
−
=
,
где n – целое число равное N/2 (округление при перевод в целое число
производится здесь в большую сторону).
3) по числу ссылок на данные:
•
плотный – число индексных записей равно числу записей данных, одна
индексная запись ссылается только на одну запись данных;
•
неплотный – число индексных записей меньше числа записей данных,
индекс указывает либо на первую запись в определенной группе, либо на
страницу с определенной группой записей данных, записи данных при
этом также должны быть упорядочены по некоторому полю. Например,
если список сотрудников упорядочен по фамилии, то можно построить
неплотный индекс, которых будет в качестве ключа содержать первую
букву фамилии, и этот индекс будет ссылаться на записи данных
следующим образом: «А» -> на первую фамилии в списке начинающуюся
на «А», «Б» -> на первую фамилии в списке начинающуюся на «Б», и т.п.
Поиск конкретного сотрудника по фамилии тогда можно осуществить
следующим образом:
112