Какая разница между использованием INDEX против KEY в MySQL?

Я знаю, как использовать 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).

Ответ 1

Нет никакой разницы. Они являются синонимами.

Из руководства CREATE TABLE:

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

Ответ 2

Вот хорошее описание о "разнице":

"MySQL требует, чтобы каждый ключ также был проиндексирован, чтобы детали реализации, специфичные для MySQL, повышали производительность".

Ответ 3

Он упоминается как синоним INDEX в документах "create table": Справочное руководство MySQL 5.5:: 13 Синтаксис операторов SQL:: 13.1. Операторы определения данных:: 13.1.17 CREATE TABLE Синтаксис

Nos уже процитировал раздел и связал справку для 5.1.

Подобно PRIMARY KEY создает первичный ключ и индекс для вас, KEY создает только индекс.

Ответ 4

Ключи - это специальные поля, которые играют очень специфические роли в таблице, а тип ключа определяет его назначение в таблице.

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

SO...

Ключи - это логические структуры, которые вы используете для идентификации записей в таблице, а индексы - это физические структуры, которые вы используете для оптимизации обработки данных.

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

Автор: Майкл Эрнандес

Ответ 5

Ключ - это набор столбцов или выражений, на которых мы создаем индекс.

  • Хотя индекс - это структура, которая хранится в базе данных, ключи - это строго логическая концепция.

  • Индекс помогает нам в быстром доступе к записи, тогда как ключи просто идентифицируют записи однозначно.

  • В каждой таблице обязательно будет ключ, но индекс не является обязательным.

Проверьте https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721