MySQL中的Index和Key有什么区别?

我知道如何在下面的代码中使用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官方页面find任何文档。

谁能告诉我KEY和INDEX的区别是什么? 我可以看到不同的是,当我使用KEY …时,我需要重复该单词,例如KEY order_date(order_date)。

没有区别。 他们是同义词。

CREATE TABLE手册条目 :

KEY通常是INDEX的同义词。 当在列定义中给出时,键属性PRIMARY KEY也可以被指定为KEY 。 这是为了与其他数据库系统兼容而实现的。

下面是关于“差异”的一个很好的描述:
http://discuss.fogcreek.com/joelonsoftware5/default.asp?cmd=show&ixPost=152398

“MySQL要求每个关键字都被编入索引,这是MySQL特有的实现细节来提高性能。”

键是在表内扮演特定angular色的特殊字段,键的types决定了它在表中的用途。

索引是RDBMS(数据库pipe理系统)提供的用于改善数据处理的结构。 索引与逻辑数据库结构无关。

所以…

密钥是用于识别表内logging的逻辑结构,索引是用于优化数据处理的物理结构。

资料来源:数据库devise为单纯的凡人

作者:Michael Hernandez

它在“create table”文档中被提及为INDEX的同义词: MySQL 5.5参考手册:: 13 SQL语法语法:: 13.1数据定义语句:: 13.1.17 CREATE TABLE语法

Nos已经引用该部分,并将5.1的帮助联系起来。

就像PRIMARY KEY为你创build一个主键和一个索引一样, KEY只创build一个索引。

关键是我们构build索引的一组列或expression式。

  1. 虽然索引是存储在数据库中的结构,但键是严格的逻辑概念。

  2. 索引帮助我们快速访问logging,而键只是唯一地标识logging。

  3. 每个表都必须有一个键,但是有一个索引不是强制性的。

请查看https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721