Платформы корпоративных информационных систем


Indexes



Indexes


MySQL поддерживает концепцию индексирования таблиц, как описано в главе 2, «Проектирование баз данных». Индексы создаются посредством особых «типов», включенных в определение таблицы.

KEY/INDEX [name] (column, [column2, . . . ])

Создает обычный индекс для всех столбцов с именами. (KEY и INDEX в этом контексте будут синонимами.) Индексу может быть дано имя (не обязательно). Если имя не указано, будет приписано имя, основанное на имени первого столбца, и, если это необходимо для поддержания уникальности, к имени будет добавлена цифра. Если в индекс входит более одного столбца, то все столбцы слева будут объединены в подгруппы и проиндексированы. Обратите внимание на следующее определение индекса: INDEX idxl ( name, rank, serial );

При создании этого индекса будут проиндексированы следующие группы столбцов:

  • name, rank, serial
  • name, rank name

PRIMARY KEY

Создает первичный ключ. Первичный ключ — это особый ключ, который может быть только один для каждой таблицы. По сути, первичный ключ- это уникальный (UNIQUE) ключ с именем «PRIMARY». Несмотря на привилегированный статус, он функционирует как любой другой уникальный ключ.

UNIQUE [nаmе] (column, [column2, . , . ])

Создает особый индекс, все входящие значения которого должны быть уникальными (и соответственно они уникальны в индексированных полях). Попытка ввести существующее значение в уникальный индекс вызовет ошибку. Следующая команда создает уникальный индекс поля «nicknames»:

UNIQUE (nicknames);

В существующей реализации индексирования в MySQL значение NULL не допускается ни в одном из полей, входящих в индекс.

При индексировании текстовых полей (CHAR, VARCHAR и их синонимы) возможно индексирование только первой части всего поля. Например, следующая команда создаст индекс числового поля 'id' вместе с первыми 20 символами текстового поля 'address':

INDEX adds ( id, address(20) );

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

Поля, входящие в индекс, должны быть определены с атрибутом NOT NULL (см. выше). При создании индекса отдельной командой MySQL сгенерирует ошибку, если NOT NULL не указан. Однако при определении первичного ключа добавлением атрибута PRIMARY KEY к описанию таблицы, атрибут NOT NULL будет добавлен автоматически (без предупреждения), если он не указан явно.

В добавление к описанным выше MySQL содержит следующие специальные «типы»:

  • FOREIGN KEY ( name (column, [column2, . . . ])
  • CHECK

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

У вас должны быть право CREATE для базы данных, где используется предложение CREATE TABLE .









Начало  Назад  Вперед


Книжный магазин