
- •42. Понятие индекса.
- •43. Методы организации индекса:
- •44. Плотный индекс
- •45. Неплотный индекс
- •46. Индекс b-дерево.
- •47. Инвертированные списки.
- •48. Понятие курсора. Типы курсоров.
- •49. Управление курсорами на языке t-sql. Объявление курсора
- •50. Язык программирования бизнес-логики сервера бд.
- •51. Команды управления вычислительным процессом
42. Понятие индекса.
Основная проблема в СУБД – это поиск нужных данных за минимальное время.
Быстрый поиск может быть выполнен в случае, если данные отсортированы.
Сортировка данных в таблице невозможна, т.к. критериев поиска может быть несколько.
Поэтому для таблицы с данными создаются специальные таблицы для каждого критерия поиска, которые называются индексы.
Индекс – это структура данных для быстрого поиска записей в таблице по значению ключа.
43. Методы организации индекса:
Первичного ключа
Плотным индексом (некластерный индекс) – индексно-прямой файл
Неплотным индексом (кластерный индекс) – индексно-последовательный файл
Б-деревья
Вторичного ключа
Инвертируемые списки
Оператор создания индекса
СУБД всегда создает индекс для первичного ключа таблицы
Для создания индексов других полей используется оператор SQL
CREATE [UNIQUE] INDEX имя_индекса
ON имя_таблицы (имя_столбца [ ASC | DESC ] [ … ] )
В каждой СУБД оператор создания индексов содержит дополнительные предложения специфические для каждой СУБД.
CREATE [UNIQUE] создание уникального индекса
[ CLASTERED | NONCLASTERED ] создание неплотного или плотного индекса
ON { имя_таблицы | имя_представления }
(имя_столбца [ ASC | DESC ] [ … ] ) по возрастанию или убыванию
WITH
[ <параметры> [,…n] ]
[ ON имя_файла_группы ] расположение индекса в файлах ОС БД
<параметры> - это
{ PAD_INDEX | резервирование на каждой странице индекса свободного пространства
FILLFACTOR = %запол. | степень заполнения свободного пространства
IGNORE_DUP_KEY | Поведение сервера при появлении дублей стр
DROP_EXISTING | Поведение сервера при наличии индекса
STATISTICS_NORECOMPUTE |
SORT_IN_TEMPDB
}
44. Плотный индекс
Плотный индексный файл предполагает размещение записей в файле в произвольном порядке и создание другого файла с индексами, с помощью которого будут отыскиваться требуемые записи. Этот дополнительный файл называется плотным индексом.
Плотный индекс состоит из индексов (k, р), где р - указатель на запись с ключом k в основном файле. Все индексы в индексном файле отсортированы по значению ключа.
Алгоритм поиска данных:
45. Неплотный индекс
Еще одним распространенным способом организации индексного файла является поддержание файла с данными в отсортированном по значениям ключей порядке. Чтобы облегчить процедуру поиска, можно создать второй файл, называемый разреженным индексом, который состоит из пар (k, p), где k-значение ключа, а p-файловый указатель блока, в котором значение ключа первой записи равняется k. Этот разреженный индекс также отсортирован по значениям ключей.
Алгоритм добавления записи:
46. Индекс b-дерево.
Построение В-деревьев связано с простой идеей построения индекса над уже построенным индексом. Действительно, если построит неплотный индекс, то сама индексная область может быть рассмотрена как основной файл, над которым надо снова построить неплотный индекс, а потом снова над новым индексом строит следующий и так до того момента, пока не останется всего один индексный блок. В общем случае получится некоторое дерево, каждый родительский блок которого связан с одинаковым количеством подчиненных блоков, число которых равно числу индексных записей, размещаемых в одном блоке.
Количество обращений к диску при этом для поиска любой записи одинаково и равно количеству уровней в построенном дереве. Такие деревья называются сбалансированными (balanced) именно потому, что путь от корня до любого листа в этом древе одинаков. Именно термин «сбалансированное» от английского «balanced» — «сбалансированный, взвешенный» и дал название данному методу организации индекса.