Индексы
Индекс представляет собой указатель на данные, размещенные в реляционной таблице.
Можно провести аналогию индекса таблицы базы данных с алфавитным указателем, обычно помещаемым в конце книги. Чтобы найти в книге страницы, относящиеся к некоторой теме, проще всего обратиться к указателю, в котором устанавливается соответствие между перечисленными в алфавитном порядке темами и номерами страниц, и сразу определить требуемые страницы. Чтобы без указателя найти все страницы, относящиеся к нужной теме, пришлось бы просматривать всю книгу. Индекс базы данных предназначен для аналогичных целей — чтобы ускорить поиск информации в таблице базы данных. Индекс предоставляет информацию о точном физическом расположении данных в таблице.ПРИМЕЧАНИЕ------------------------------------------------------------------------------
Мы отмечали, что записи в реляционных таблицах не упорядочены.
Тем не менее любая запись в конкретный момент времени имеет вполне определенное физическое местоположение в файле базы данных, хотя это положение и может изменяться при изменении информации, хранящейся в базе данных.При создании индекса в нем сохраняется информация о местонахождении записей, относящихся к индексируемому столбцу таблицы. При добавлении в таблицу новых записей или удалении существующих индекс также модифицируется.
При выполнении запроса к базе данных, в условие поиска которого входит индексированный столбец, поиск значений производится в первую очередь в индексе. Если этот поиск оказывается успешным, то в индексе устанавливается точное местоположение искомых данных в таблице базы данных.
Рассмотрим пример индекса.
На рис. 4.1 показан фрагмент таблицы СТУДЕНТЫ и индекса, построенного по полю Имя данной таблицы. При выполнении поиска по имени студента, просматривая индекс, можно сразу определить порядковый номер записи, содержащей необходимую информацию, и затем быстро найти в таблице сами данные. Если бы у таблицы отсутствовал индекс по полю Имя, то выполнение поиска по имени студента потребовало бы просмотра всей таблицы. Таким образом, использование индексов сокращает время выборки данных. Рис. 4.1. Поиск информации в таблице с помощью индекса |
ПРИМЕЧАНИЕ------------------------------------------------------------------------------
Ускорение поиска информации при использовании индекса может показаться неочевидным — ведь количество записей в индексе совпадает с количеством записей в таблице. Однако следует учитывать два обстоятельства. Во-первых, обращение к индексу выполняется быстрее, чем к таблице, во-вторых, в индексе записи хранятся в упорядоченном виде (в рассматриваемом примере — в алфавитном порядке) и поэтому при поиске информации в индексе нет необходимости просматривать все данные до конца индекса.
Различают несколько типов индексов. Наиболее часто выделяют три типа:
? простые;
? составные;
? уникальные.
Простые индексы представляют собой простейший и вместе с тем наиболее распространенный тип индекса. Простой индекс строится на основе только одного столбца реляционной таблицы (индекс, приведенный на рис. 4.1, является простым).
Составные индексы строятся по двум и более столбцам реляционной таблицы. При создании составного индекса необходимо принимать во внимание, что последовательность столбцов, по которым создается индекс, влияет на скорость поиска данных.
ПРИМЕЧАНИЕ------------------------------------------------------------------------------
Последовательность столбцов в составном индексе указывается при его создании и никаким образом не связана с последовательностью столбцов в таблице.
Можно назвать два условия оптимальности следования столбцов в составном индексе:
? первым следует помещать столбец, содержащий наиболее ограничивающее значение (то есть содержащий меньшее количество повторов);
? первым следует помещать столбец, содержащий данные, которые чаще задаются в условиях поиска.
Сформулированные условия оптимальности часто являются противоречивыми, так что между ними следует находить разумный компромисс.
Уникальные индексы не допускают введения в таблицу дублирующих значений. Уникальные индексы используются не только с целью повышения скорости поиска, но и для поддержания целостности данных. Уникальный индекс может быть как простым, так и составным.
ПРИМЕЧАНИЕ------------------------------------------------------------------------------
Следует серьезно относиться к планированию индексов. Неправильное применение индексов может привести к снижению производительности системы. Мы уже говорили о том, что физическое местоположение записей может изменяться в процессе редактирования данных пользователями, а также в результате манипуляций с файлами базы данных, проводимых самой СУБД (таких как сжатие данных, сборка «мусора» и др.). Обычно при этом происходят соответствующие изменения в индексе, а это увеличивает время, требующееся СУБД для проведения таких операций. Поэтому, как правило, не следует индексировать столбцы, данные в которых подвержены частому изменению; столбцы, содержащие большое количество пустых значений; столбцы, содержащие небольшое количество уникальных значений; небольшие таблицы и столбцы большого размера.
Еще по теме Индексы:
- Индекс Флэша
- Индекс Флэша — Кинкейда
- ИНДЕКС
- ИНДЕКС СОЦИОМЕТРИЧЕСКИЙ
- Зрачковый индекс
- СОЦИОМАТРИЦА
- Статья 1056-1. Проценты по кредитному договору
- 1.6.1. Бейсбольный гений
- Музыкальный материал
- ТЕСТ САМОАТТЕСТАЦИИ КОЛЛЕКТИВА
- Статья 625. Ответственность за нарушение денежного обязательства
- Теория и практика юридической психолингвистики.
- 7. Оплата выполненных работ
- Статистическая обработка.
- 2. Любовь к знаниям