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

我知道如何使用索引如下代码。我知道如何使用外键主键

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),
....
< p > < br > 然而,我发现一个代码使用KEY而不是INDEX如下所示
...
KEY order_date (order_date)
...
< p > < br > 我在MySQL的官方页面上找不到任何解释。有人能告诉我KEY和INDEX有什么区别吗?< / p > 我看到的唯一区别是,当我使用KEY ...时,我需要重复单词,例如
KEY order_date (order_date) . < / p >
109747 次浏览

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

CREATE TABLE手动条目:

KEY通常是INDEX的同义词。键属性PRIMARY KEY可以 也可以在列定义中指定为KEY。这是 为兼容其他数据库系统而实现
在'create table'文档中,它作为INDEX的同义词被提及: MySQL 5.5参考手册::13 SQL语句语法::13.1数据定义语句::13.1.17 CREATE TABLE语法 < / p >

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

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

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

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

所以…

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

来源:Database Design for Mere Mortals

作者:Michael Hernandez

下面是关于“差异”的很好的描述:

MySQL要求每个Key都被索引,这是一个实现 详细的MySQL,以提高性能。" < / p >

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

  1. 索引是存储在数据库中的结构,而键是严格意义上的逻辑概念。

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

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

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