5. Понятие индексов

5. Понятие индексов

Создание ключей в базовых отношениях автоматически связано с созданием индексов.

Дадим определение понятия индекса.

Индекс – это системная структура данных, в которой размещается обязательно упорядоченный перечень значений какого-либо ключа со ссылками на те кортежи отношения, в которых эти значения встречаются.

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

1) простые.

Простой индекс берется для подсхемы схемы базового отношения из одного атрибута;

2) составные.

Соответственно составной индекс – это индекс для подсхемы, состоящей из нескольких атрибутов.

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

1) уникальные индексы – это индексы, ссылающиеся не более чем на один атрибут.

Уникальные индексы, как правило, соответствуют первичному ключу отношения;

2) неуникальные индексы – это индексы, могущие соответствовать нескольким атрибутам одновременно.

Неуникальные ключи, в свою очередь, чаще всего соответствуют внешним ключам отношения.

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

Здесь соответственно Primary key – первичный ключ отношения, Foreign key – внешний ключ. Понятно, что в этих отношениях, индекс атрибута Primary key – уникальный, так как он соответствует первичному ключу, т. е. одному атрибуту, а индекс атрибута Foreign key – неуникальный, ведь он соответствует ключам внешним. И его значение «20» соответствует одновременно первой и третьей строкам таблицы-отношения.

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

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

106 = (103)2 = 220;

Создаются индексы в системах управления базами данных при помощи уже известного нам оператора Create, но только с добавлением ключевого слова index. Выглядит такой оператор следующим образом:

Create index имя индекса

On имя базового отношения (имя атрибута,..);

Здесь мы видим знакомый нам металингвистический символ «,..», обозначающий возможность повтора аргумента через запятую, т. е. в этом операторе может быть создан индекс, соответствующий нескольким атрибутам.

Если требуется объявить уникальный индекс, перед словом index добавляют ключевое слово unique, и тогда весь оператор создания в базовом отношении индекса принимает следующий вид:

Create unique index имя индекса

On имя базового отношения (имя атрибута);

Тогда в самом общем виде, если вспомнить правило обозначения необязательных элементов (металингвистический символ []), оператор создания индекса в базовом отношении будет выглядеть следующим образом:

Create [unique] index имя индекса

On имя базового отношения (имя атрибута,..);

Если требуется удалить из базового отношения уже имеющийся индекс, используют оператор Drop, также уже известный нам:

Drop index {имя базового отношения. Имя индекса},.. ;

Почему здесь используется уточненное имя индекса «имя базового отношения. Имя индекса»? В операторе удаления индекса всегда используется его уточненное имя, потому что имя индекса должно быть уникальным в пределах одного отношения, но не больше.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

4.1.3 Освобождение индексов

Из книги автора

4.1.3 Освобождение индексов В том случае, когда ядро освобождает индекс (алгоритм iput, Рисунок 4.4), оно уменьшает значение счетчика ссылок для него. Если это значение становится равным 0, ядро переписывает индекс на диск в том случае, когда копия индекса в памяти отличается от


Сравнение индексов

Из книги автора

Сравнение индексов Изучая поисковые индексы «Яндекс» и Google с помощью операторов inurl: и site, мы можем найти разницу в количестве проиндексированных страниц по сайту в целом и по каждому кластеру в частности. Это самая простая и эффективная проверка сайта на ошибки,


Применение индексов

Из книги автора

Применение индексов Теперь, когда ясно, что можно требовать от индексов, настало время разобраться с тем, какую роль они играют в базе данных. Индексы используются в трех основных случаях:* Ускорение выполнения запросов. Индексы создаются для полей, которые используются


Ускорение выполнения запросов с помощью индексов

Из книги автора

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


Обеспечение ссылочной целостности с помощью индексов

Из книги автора

Обеспечение ссылочной целостности с помощью индексов В определении индекса имеется еще одна опция - UNIQUE. Если ее указать, то индекс позволит заносить в таблицу только уникальные значения. Фактически это служит основой для реализации уникальных ключей (UNIQUffi KEY).


Оптимизация производительности индексов

Из книги автора

Оптимизация производительности индексов В названии этого раздела можно обнаружить некоторый парадокс - индексы, как говорилось выше, служат для того, чтобы ускорить выполнение запросов, и оказывается, что их самих надо тоже оптимизировать! Но что делать (такова жизнь) -


Статистика страниц индексов

Из книги автора

Статистика страниц индексов Чтобы получить статистику по страницам индексов, необходимо либо указать при запуске gstat ключ -index, либо запустить с ключом -all. Статистика по одному индексу выглядит следующим образом:CUSTOMER (33)Index CONTACT_IDX (5)Depth: 2, leaf buckets: 32, nodes: 20005Average data length: 1.00,total


Имена индексов ограничений

Из книги автора

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


Определение индексов и первичного ключа

Из книги автора

Определение индексов и первичного ключа Теперь, когда вы создали базовую таблицу, осталось определить индексы. Индекс (index) - это атрибут, который можно присвоить полю, чтобы облегчить для процессора баз данных выборку данных на основе информации, хранимой в этом поле.


2.4.4. Создание таблиц и индексов в Falcon

Из книги автора

2.4.4. Создание таблиц и индексов в Falcon Falcon поддерживает все стандартные типы данных столбцов, обеспечиваемые MySQL.Чтобы создать таблицу, которая использует Falcon, примените опцию ENGINE = Falcon в инструкции CREATE TABLE:CREATE TABLE names (id INT, fname VARCHAR (20),lname VARCHAR (20)) ENGINE=FalconИндексы могут быть


4.6.1. Создание пространственных индексов

Из книги автора

4.6.1. Создание пространственных индексов MySQL может создавать пространственные индексы, использующие синтаксис, подобный аналогичному для создания регулярных индексов, но расширенный с ключевым словом SPATIAL. В настоящее время пространственные столбцы, которые


2.2.4 Поддержка фрагментации таблиц и индексов

Из книги автора

2.2.4 Поддержка фрагментации таблиц и индексов INFORMIX-OnLine DS поддерживает горизонтальную локальную фрагментацию таблиц. Это такой способ хранения таблицы, когда совокупность ее строк разбивается на несколько групп согласно некоторому правилу, и эти группы хранятся на


Импорт существующих индексов

Из книги автора

Импорт существующих индексов Не импортируйте "первичные индексы" таблиц при миграции из другой СУБД. Есть две важные причины отказаться от таких индексов.* Многие существующие системы используют иерархические структуры индексов для реализации ссылочной целостности.


Просмотр индексов

Из книги автора

Просмотр индексов Для просмотра всех индексов, определенных в текущей базе данных, используйте в isql команду SHOW INDEX:* чтобы просмотреть все индексы, определенные для конкретной таблицы, используйте команду:SHOW INDEX имя-таблицы;* для просмотра информации конкретного индекса


Действия по обслуживанию индексов

Из книги автора

Действия по обслуживанию индексов Индексы являются двоичными структурами, которые могут стать разбалансированными после многих изменений базы данных, особенно если вы пренебрегаете общим обслуживанием базы данных. Индексы могут быть сделаны сбалансированными[55]