Материал: Л-9 - Методы доступа к данным

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

Индексы повышают производительность запросов, выбирающих относительно небольшое число строк из таблицы.

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

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

SELECT * FROM emp WHERE name = ’Петр’;

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

Но даже при наличии такой возможности система не всегда обращается к индексу.

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

Это происходит потому, что данные через индекс выби-

раются не в той последовательности, в которой они хранятся в памяти.

Для подобных запросов построение индекса

нецелесообразно.

Обращение к составному индексу (1)

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

Если индекс включает поля (X, У, Z), то обращение к нему будет происходить, когда в условии запроса участвуют поля XYZ, XY или X (и именно в таком порядке).

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

Обращение к составному индексу (2)

В некоторых случаях использование составного индекса предпочтительнее, чем одиночного, а именно:

Несколько столбцов с низкой селективностью в комбинации друг с другом могут дать гораздо более высокую селективность.

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

Выбор столбцов для индекса (1)

В первую очередь выбираются столбцы, наиболее часто встречающиеся в условиях поиска.

Индексируют столбцы, являющиеся внешними ключами. В этом случае наличие индекса позволяет обновлять строки подчиненной таблицы без блокировки основной таблицы (при конкурентном обновлении).

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