在MySQL中使用INDEX和KEY之间有什么区别

shi*_*hin 174 mysql indexing 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), 
  ....
Run Code Online (Sandbox Code Playgroud)

但是我发现使用KEY而不是INDEX的代码如下.

...
KEY order_date (order_date) 
...
Run Code Online (Sandbox Code Playgroud)

我无法在MySQL官方页面中找到任何文档.

谁能告诉我KEY和INDEX之间有什么区别?我可以看到的不同之处在于,当我使用KEY ...时,我需要重复这个词,例如KEY order_date(order_date).

nos*_*nos 240

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

CREATE TABLE手动输入:

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

  • “当在列定义中给出时,键属性‘PRIMARY KEY’也可以指定为‘KEY’。” 这是什么意思? (2认同)
  • @Zyl 我已经更新了这个答案来回答你的问题。 (2认同)
  • @NaeemUlWahhab 我已经更新了这个答案来回答你的问题。 (2认同)

Ste*_*fan 12

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

"MySQL要求每个Key都要编入索引,这是一个特定于MySQL的实现细节,以提高性能."

  • 问题是关于在 MySQL 中使用 SQL 标识符 KEY 和 INDEX。不是键和索引之间的区别。 (2认同)

Jay*_*ayD 10

键是在表中扮演非常特定角色的特殊字段,键的类型决定了它在表中的用途。

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

所以...

键是用于识别表中记录的逻辑结构,索引是用于优化数据处理的物理结构。

资料来源:为凡人设计的数据库

作者:迈克尔·埃尔南德斯

  • 问题是关于 MySQL 中 SQL 标识符 KEY 和 INDEX 的使用。不是键和索引之间的区别。 (6认同)

小智 5

INDEX在“创建表”文档中作为同义词提到: MySQL 5.5 参考手册 :: 13 SQL 语句语法 :: 13.1 数据定义语句 :: 13.1.17 CREATE TABLE 语法

@Nos 已经引用了该部分并链接了 5.1 的帮助。

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