Руководство по программному пакету ERwin

Что такое индекс?


В таблице реляционной базы данных данные обычно хранятся в том же порядке, в котором их ввели в таблицу. Хотя такой способ хранения и позволяет Вам быстро вводить новые данные, но поиск нужной строки в таблице представляется трудным. Например, в таблице MOVIE могут храниться тысячи названий фильмов в том порядкке, в котором эти фильмы закупались фирмой проката видеопродукции. Если Вам нужно найти какой-то определенный фильм, например 'Танцы с волками', он может храниться в любом месте таблицы MOVIE в зависимости от того, когда его приобрели и ввели в базу данных. Представьте себе, сколько времени может занять поиск 'Танцев с волками', если просматривать по порядку все строки в таблице.

Чтобы решить эту проблему поиска данных, СУБД использует особый тип файла, называемый индексом. Точно так же, как содержание (Index) книги помогает Вам быстро найти информацию, поскольку содержит все номера страниц книги, посвященных конкретной теме, так и в базе данных, если информация, хранящаяся в колонке, индексирована, то индекс указывает на все строки, в которых хранится конкретное значение колонки.

Например, если фирма проката видеопродукции нуждается в быстром поиске фильмов по их названию, то Вы можете создать индекс по колонке movie_name таблицы MOVIE. В индексе movie-name названия фильмов отсортированы в алфавитном порядке. Для каждого названия фильма индекс ссодержит ссылку, указывающую, в каком месте таблицы хранится этот фильм.

Когда Вам нужно найти какой-то фильм, Вы вводите соответствующий критерий поиска (movie-name='Танцы с волками'), как выражение в запросе. При выполнении запроса СУБД просматривает индекс, чтобы найти, где хранится нужный фильм, вместо того чтобы просматривать по порядку все строки таблицы MOVIE. Поскольку значения в индесе хранятся в определенном порядке и нужно просматривать значительно меньший объем данных, использование индекса для поиска нужной информации гораздо быстрее, чем просмотр требуемых таблиц базы данных.

Вы можете создать свой индекс для каждой колонки в таблице, если Вам часто бывает нужно найти какие-то значения, хранящиеся в этой колонке.
Например, Вы можете захотеть искать фильмы по признаку movie-rating (например, 'PG') или по размеру арендной платы (например, менее $3.50 в день). Вы также можете создать единый индекс на основе нескольких колонок для поиска определенного набора значений. Например, если Вы создадите единый индекс по всем колонкам первичного ключа таблицы MOVIE-RENTAL-RECORD (renting-customer, master-number, movie-copy-number, rental-record-date), и отсортируете этот индекс по убыванию по rental-record-date, то сможете быстро найти, кто последним брал какую-то определеннуую копию 'Крестного отца'.

Когда Вы генерируете схему физической базы данных, ERwin автоматически создает отдельный индекс на основе первичного ключа каждой таблицы, а также на основе всех альтернативных ключей, внешних ключей и Inversion Entry, поскольку эти колонки наиболее часто используются для поиска данных. Используя любой из автоматически сгенерированных индексов в качестве точки отсчета, ERwin позволяет Вам легко создавать новые индексы по мере того, как изменяются Ваши потребности. Когда Вы создаете новый индекс, Вы можете присвоить ему разные колонки и изменить порядок, в котором отсортированы значения в индексе, так чтобы были удовлетворены требования поиска Ваших конкретных приложений, работающих с базами данных.




Содержание раздела