Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
12.65 Mб
Скачать

1.3.8.1. Индексирование таблиц

Для таблиц создаются индексы (индексированные таблицы). Для не­ко­торых СУБД (FoxPro, dBase, Paradox) индексы могут храниться на диске в отдельных индексных файлах. Индексный файл содержит записи, каждая из которых содержит два значения: индекса и адреса записи таблицы со значением данного индекса. Адреса могут быть абсолютными (номер цилиндра, дорожки, сектора), отно­ситель­ными (номер записи в таблице) или сим­во­ли­ческими. Записи в ин­дек­сном файле отсортированы по воз­рас­та­нию или убыванию значения индекса.

Индексом может быть поле или группа полей (сос­тав­ной индекс) или свертка индекса в виде хеш‑кода (шифрованное значение ключа). Хеш‑код уменьшает размер индекса, но требуется дополнительное время на шифрование и де­ши­ф­ро­вание спе­циаль­ными программами (процедурами хеширования или ран­до­мизации). Индексные файлы могут быть мно­го­уров­невыми.

Обычно выделяют четыре типа индексов:

  1. Первичный (Primary) который является уникальным, служит для связи с другими таблицами. У таблицы может быть только один первич­ный индекс. Индексные поля не могут иметь пустые зна­че­ния.

  2. Вторичный, или кандидат (Candidat), аналогичный первичному, но не может быть им, так как место первичного индекса уже занято.

  3. Уникальный (Unique) индекс хранит неповторяющиеся значения индекса, т.е. дублирующиеся значения игнорируются.

  4. Регулярный (Regular) индекс хранит значения индексов всех за­писей таблицы. Обычно такой индекс является внешним ключом.

Наличие индекса позволяет:

  1. обработать таблицу в нужной последовательности (логическая сортировка базы);

  2. осуществить прямой поиск нужной записи по ее индексу путем пе­ребора записей индексного файла и сравнения текущего индекса (свер­т­ки) с искомым значением индекса (свертки после ее получения по иско­мому индексу). После нахождения записи в индексном файле выби­ра­ет­ся адрес, и запись таблицы с данным адресом становится текущей. Если ис­поль­зуется свертка и имеются синонимы, то дополнительно просматрива­ет­ся цепочка синонимов и выбирается запись с искомым значением ин­декса. Так как размеры индексных файлов небольшие, они хранятся в оперативной памяти и их просмотр ведется в оперативной памяти очень быстро;

  3. связать родительскую таблицу с дочерней таблицей по индексу;

  4. организовать быстрый последовательный поиск группы записей таблицы по условию их отбора путем использования фильтрованного ин­дек­са или использовать индексы вместо полей записей таблицы в усло­виях отбора записей. Например, если имеется индекс по полю “Фами­лия” и нужно найти запись о сотруднике Иванове, то будет просматривать­ся не запись таблицы, а индексный файл, что значительно быстрее.

Процессом просмотра и доступа к базе данных управляет только один индексный файл (главный). Однако при измене­нии информации в таблице обновляются все индексные фай­лы таблицы. Глав­­ный индексный файл можно определить при помощи специальных ко­манд управления индексами (для FoxPro: Set Order, Set Index).