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

时间:2009-09-09 19:26:24

标签: 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), 
  ....


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

...
KEY order_date (order_date) 
...


我在MySQL官方页面上找不到任何解释。谁能告诉我KEY和INDEX之间的区别是什么?

我看到的唯一区别是当我使用KEY ...时,我需要重复这个词,例如
KEY order_date (order_date)

5 个答案:

答案 0 :(得分:221)

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

来自the CREATE TABLE manual entry

  

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

答案 1 :(得分:10)

以下是关于“差异”的nice description

  

“MySQL要求每个Key都被索引,这是一个实现   特定于MySQL的细节以提高性能。“

答案 2 :(得分:4)

在“创建表”文档中,它被称为INDEX的同义词: MySQL 5.5 Reference Manual :: 13 SQL Statement Syntax :: 13.1 Data Definition Statements :: 13.1.17 CREATE TABLE Syntax

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

PRIMARY KEY一样为您创建主键和索引, KEY仅创建索引。

答案 3 :(得分:4)

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

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

SO ......

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

来源:纯粹人类数据库设计

作者:Michael Hernandez

答案 4 :(得分:0)

键是一组列或表达式,我们在其上构建索引。

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

  2. 索引帮助我们快速访问记录,而密钥只是唯一地识别记录。

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

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