Сканирование таблицы
Если подходящий индекс для таблицы отсутствует, для выборки строк СУБД использует метод сканирования таблицы.
Система последовательно извлекает и исследует каждую строку таблицы (от первой до последней), и помещает строку в результирующий набор, если для нее удовлет-
воряется условие поиска (предложение WHERE).
Строки извлекаются в соответствии с их физическим расположением в памяти. Метод менее эффективен, чем доступ с использованием индексов.
Индекс
Индексирование – способ доступа к данным в реляционной таблице с помощью специальной структуры –
индекса.
Индекс – это структура, которая определяет соответствие значения ключа записи (атрибута или группы атрибутов) и местоположения этой записи – КБД .
Индексирование данных (1)
Индексы хранятся в дополнительных структурах БД (страницах индексов). Структура страниц индексов похожа на структуру страниц данных.
Для каждой индексируемой строки есть элемент индекса, сохраняемый на странице индексов.
Элемент индекса состоит из ключа индекса и указателя. Элемент индекса значительно короче строки таблицы, на которую он указывает. Поэтому количество элементов индекса на странице индексов намного больше, чем количество строк в странице данных.
Индексирование данных (2)
Каждый индекс связан с определенной таблицей, но является внешним по отношению к ней и хранится отдельно.
Пустые значения атрибутов (NULL) не индексируются.
Индексирование ускоряет доступ к записям, поскольку:
значения индексируемого атрибута упорядочены (при линейном поиске просматривается в среднем половина индекса);
индекс занимает меньше страниц памяти, чем сама таблица (на чтение индекса тратится меньше времени).
Индексирование данных (3)
Индексы поддерживаются динамически – после добавления (удаления) записей и модификации индексируемых полей, индекс приводится в соответствие с последней версией данных таблицы.
Обновление индекса занимает время (иногда очень большое), поэтому наличие многих индексов может замедлить работу БД.
Существуют методы оптимизации переиндексации.
При выполнении пакетной модификации БД обновление индексов может происходить один раз после внесения
всех изменений в данные.