Я знаю, как использовать INDEX, как в следующем коде. И я знаю, как использовать внешний ключ и первичный ключ .
CREATE TABLE tasks (
task_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INT UNSIGNED NOT NULL DEFAULT 0,
task VARCHAR(100) NOT NULL,
date_added TIMESTAMP NOT NULL,
date_completed TIMESTAMP,
PRIMARY KEY (task_id),
INDEX parent (parent_id),
....
Однако я нашел код, использующий KEY вместо INDEX, как показано ниже.
...
KEY order_date (order_date)
...
Я не смог найти никакого объяснения на официальной странице MySQL. Может кто-нибудь сказать мне, в чем разница между KEY и INDEX?
Единственное отличие, которое я вижу, состоит в том, что когда я использую KEY ...
, мне нужно повторить слово, например
KEY order_date (order_date)
.
KEY keyname (column_name)
когда я создавал таблицу с помощьюINDEX keyname (column_name)
. Тот факт, что это синоним, прекрасно объясняет это.Вот хорошее описание о «разнице»:
источник
Он упоминается как синоним для документов
INDEX
'create table': Справочное руководство по MySQL 5.5 :: 13 Синтаксис операторов SQL :: 13.1 Операторы определения данных :: 13.1.17 Синтаксис CREATE TABLEНос уже процитировал раздел и связал справку для 5.1.
Like
PRIMARY KEY
создает первичный ключ и индекс для вас,KEY
создает только индекс.источник
Ключи - это специальные поля, которые играют очень специфические роли в таблице, а тип ключа определяет его назначение в таблице.
Индекс - это структура, которую RDBMS (система управления базами данных) предоставляет для улучшения обработки данных. Индекс не имеет ничего общего с логической структурой базы данных.
ТАК...
Ключи - это логические структуры, которые вы используете для идентификации записей в таблице, а индексы - это физические структуры, которые вы используете для оптимизации обработки данных.
Источник: Дизайн базы данных для простых смертных
Автор: Майкл Эрнандес
источник
Ключ - это набор столбцов или выражений, по которым мы строим индекс.
Хотя индекс - это структура, которая хранится в базе данных, ключи являются строго логическим понятием.
Индекс помогает нам в быстром доступе к записи, тогда как ключи просто однозначно идентифицируют записи.
У каждой таблицы обязательно будет ключ, но наличие индекса не обязательно.
Проверьте https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721
источник