<<
>>

Индексы

Ранее мы рассмотрели понятие ключей таблиц базы данных. В большинстве реляционных СУБД ключи реализуются с помощью объектов, называемых индексами.

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

Можно провести аналогию индекса таблицы базы данных с алфавитным ука­зателем, обычно помещаемым в конце книги. Чтобы найти в книге страницы, от­носящиеся к некоторой теме, проще всего обратиться к указателю, в котором устанавливается соответствие между перечисленными в алфавитном порядке те­мами и номерами страниц, и сразу определить требуемые страницы. Чтобы без указателя найти все страницы, относящиеся к нужной теме, пришлось бы просмат­ривать всю книгу. Индекс базы данных предназначен для аналогичных целей — чтобы ускорить поиск информации в таблице базы данных. Индекс предоставляет информацию о точном физическом расположении данных в таблице.

ПРИМЕЧАНИЕ------------------------------------------------------------------------------

Мы отмечали, что записи в реляционных таблицах не упорядочены.

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

При создании индекса в нем сохраняется информация о местонахождении запи­сей, относящихся к индексируемому столбцу таблицы. При добавлении в таблицу новых записей или удалении существующих индекс также модифицируется.

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

Рассмотрим пример индекса.

На рис. 4.1 показан фрагмент таблицы СТУДЕНТЫ и индекса, построенного по полю Имя данной таблицы. При выполнении поис­ка по имени студента, просматривая индекс, можно сразу определить порядко­вый номер записи, содержащей необходимую информацию, и затем быстро най­ти в таблице сами данные. Если бы у таблицы отсутствовал индекс по полю Имя, то выполнение поиска по имени студента потребовало бы просмотра всей таблицы. Таким образом, использование индексов сокращает время выборки данных.

Рис. 4.1. Поиск информации в таблице с помощью индекса

ПРИМЕЧАНИЕ------------------------------------------------------------------------------

Ускорение поиска информации при использовании индекса может показаться неоче­видным — ведь количество записей в индексе совпадает с количеством записей в таблице. Однако следует учитывать два обстоятельства. Во-первых, обращение к ин­дексу выполняется быстрее, чем к таблице, во-вторых, в индексе записи хранятся в упорядоченном виде (в рассматриваемом примере — в алфавитном порядке) и по­этому при поиске информации в индексе нет необходимости просматривать все дан­ные до конца индекса.

Различают несколько типов индексов. Наиболее часто выделяют три типа:

? простые;

? составные;

? уникальные.

Простые индексы представляют собой простейший и вместе с тем наиболее распро­страненный тип индекса. Простой индекс строится на основе только одного столбца реляционной таблицы (индекс, приведенный на рис. 4.1, является простым).

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

ПРИМЕЧАНИЕ------------------------------------------------------------------------------

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

Можно назвать два условия оптимальности следования столбцов в составном ин­дексе:

? первым следует помещать столбец, содержащий наиболее ограничивающее зна­чение (то есть содержащий меньшее количество повторов);

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

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

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

ПРИМЕЧАНИЕ------------------------------------------------------------------------------

Следует серьезно относиться к планированию индексов. Неправильное применение ин­дексов может привести к снижению производительности системы. Мы уже говорили о том, что физическое местоположение записей может изменяться в процессе редактиро­вания данных пользователями, а также в результате манипуляций с файлами базы дан­ных, проводимых самой СУБД (таких как сжатие данных, сборка «мусора» и др.). Обычно при этом происходят соответствующие изменения в индексе, а это увеличивает время, требующееся СУБД для проведения таких операций. Поэтому, как правило, не следует индексировать столбцы, данные в которых подвержены частому изменению; столбцы, содержащие большое количество пустых значений; столбцы, содержащие небольшое количество уникальных значений; небольшие таблицы и столбцы большого размера.

<< | >>
Источник: Избачков Ю. С., Петров В. Н.. Информационные системы. 2006

Еще по теме Индексы:

  1. Индекс Флэша
  2. Индекс Флэша — Кинкейда
  3. ИНДЕКС
  4. ИНДЕКС СОЦИОМЕТРИЧЕСКИЙ
  5. Зрачковый индекс
  6. СОЦИОМАТРИЦА
  7. Статья 1056-1. Проценты по кредитному договору
  8. 1.6.1. Бейсбольный гений
  9. Музыкальный материал
  10. ТЕСТ САМОАТТЕСТАЦИИ КОЛЛЕКТИВА
  11. Статья 625. Ответственность за нарушение денежного обязательства
  12. Теория и практика юридической психолингвистики.
  13. 7. Оплата выполненных работ
  14. Статистическая обработка.
  15. 2. Любовь к знаниям