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

Лекция 5 Индексы

.docx
Скачиваний:
55
Добавлен:
25.02.2015
Размер:
485.7 Кб
Скачать

Индексы

Доступ до данных:

  1. Прямое сканирование - select. Select перебирает всю таблицу. Существует вариант exist, которая возвращает true, если выполняется условие, false - нет, функция select останавливается после нахождения первого элемента, удовлетворяющего условия

  2. Доступ через индекс

Индекс - именованный объект, который должен обеспечить уменьшение времени доступа к данным. Индексы не эффективны на небольших таблицах, так как индекс является "прослойкой" между данными и пользователем.

Идеология индексов:

  1. Индексы, построенные на основе хеш-таблиц (у Microsoft не используются);

  2. Бинарные маски позволяют искать, если количество данных в столбце не большое, и данные однообразны;

  3. B-tree - трехуровневая система, которая позволяет распределять данные: верхний уровень - группа данных, нижний уровень - данные. Минусы: при вставке новых данных необходимо перестраивать индекс; если удалено много данных, то индекс становится не очень эффективным.

Существует два типа индексов:

  1. Кластерный индекс - на конечном уровне хранятся фактические значения, такой индекс всегда очень большой (соизмерим с размерами таблиц). Кластерный индекс технически ограничен, то есть одна штука на одну таблицу;

  2. Не кластерный индекс содержит на нижнем листе упорядоченный набор значений столбца, на основе которого они созданы, и ссылки на физическое место хранения. Скорость чтения не увеличивается, скорость поиска увеличивается. Не кластерных индексов можно создать 999 штук на таблицу.

Дерево изначально строится сбалансированно, то есть наполненность нижних листов всегда одинаково при этом, чем меньше индекс заполняемости, тем легче работать. Предикаты сравнения работают на дереве.

Вводится понятие селективность - процент строк, имеющих уникальные значения. Чем выше селективность, тем эффективнее работает индекс. На таблицах с низкой селективностью строить индексы бесполезно.

Также индексы бесполезно строить, если планируется выборка со значительным количеством строк.

Индексы создаются двумя способами:

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

  2. Явное создание индексов - по умолчанию создается не кластерный индекс:

Create unique(не кластерный индекс, который гарантирует уникальность столбца, на который создается индекс) или clustered или nonclustered index <имя индекса> on <таблица или представление, на основе которого будет строится индекс>

(Столбец 1 asc или desc, столбец 2 ...)

Индекс не обязательно содержит полный набор строк, для него можно указать ограничение where столб(>условие)

on filegroup

Соседние файлы в предмете Проектирование баз данных