Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / Л-9 - Методы доступа к данным

.pdf
Скачиваний:
12
Добавлен:
28.06.2021
Размер:
606.3 Кб
Скачать

Структура В*-дерева для таблицы

EMPLOYEE (индекс по emp_no)

Поиск в В*-дереве значения 25348

Начиная с корня дерева, выполняем поиск наименьшего значения ключа, большего или равного требуемому значению.

В корневом узле таким значением будет 29346, поэтому переходим на промежуточный узел, связанный с этим значением.

В этом узле условию отвечает значение 28559, поэтому переходим на лист дерева, связанный с этим значением. Этот узел и содержит искомое значение.

Определив требуемый индекс, мы можем извлечь его строку из таблицы данных с помощью указателей.

Преимущества В*-дерева (1)

Все блоки-листья в дереве расположены на одном уровне, следовательно, поиск любой записи в индексе занимает примерно одно и то же время.

В*-дерево автоматически поддерживается в сбалансированном виде.

Обеспечивается хорошая производительность для ши-

рокого спектра запросов, включая поиск по конкретному значению и поиск в открытом и закрытом интервалах.

Преимущества В*-дерева (2)

Модификация данных таблицы выполняется достаточно эффективно, т. к. в блоках индекса обычно есть свободное место для новых значений, а полная перестройка дерева выполняется достаточно редко.

Производительность В-дерева одинаково хороша для маленьких и больших таблиц и при увеличении размера таблицы существенно не меняется.

Кластеризованный индекс

Определяет физический порядок данных в таблице. Для таблицы можно создать один кластеризованный индекс

(строки таблицы упорядочиваются физически только одним способом).

Поиск выполняется от корневого узла по направлению к листьям, которые связаны между собой в двунаправлен-

ный связанный список (цепочка страниц).

Листья содержат страницы данных (узлы других уровней содержат страницы индекса.) Таблица, для которой определен кластеризованный индекс, называется

кластеризованной таблицей.

Физическая структура кластеризованных индексов

Особенности кластеризованного индекса

Кластеризованный индекс создается по умолчанию для каждой таблицы, в которой определен первичный ключ.

Каждый кластеризованный индекс однозначен по умолчанию. Если кластеризованный индекс создается для столбца с повторяющимися значениями, СУБД принудительно обеспечивает однозначность, добавляя 4-байтовый идентификатор к строкам, содержащим дубликаты.

Кластеризованные индексы обеспечивают очень быстрый доступ к данным, когда запрос осуществляет поиск в диапазоне значений.

Некластеризованные индексы

Структура некластеризованного индекса такая же, как и кластеризованного, но с двумя важными отличиями:

некластеризованный индекс не изменяет физическое упорядочивание строк таблицы;

страницы листьев некластеризованного индекса состоят из ключей индекса и закладок.

Если для таблицы определить один или более некластеризованных индексов, физический порядок строк таблицы не будет изменен.

Для каждого некластеризованного индекса СУБД создает индексную структуру в индексных страницах.

Физическая структура некластеризованных индексов

Использование индексов

Индекс создается командой:

CREATE INDEX <имя_индекса>

ON <имя_таблицы> (<поле1> [, <поле2>, ... ] ) [<параметры>];

Имя индекса должно быть уникальным среди объектов БД. Поля составного индекса перечисляются через запятую; <параметры> зависят от СУБД.

Составной индекс для таблицы СОТРУДНИКИ (ЕМР) по полям Фамилия (fam) и Имя (name):

CREATE INDEX ind_emp_name ON emp(fam, name);