ChatGPT解决这个技术问题 Extra ChatGPT

在 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 页面上找不到任何解释。谁能告诉我KEY和INDEX有什么区别?

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


a
akinuri

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

the CREATE TABLE manual entry

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


在最新版本的 SQLYog 中查看表信息时,当我使用 INDEX keyname (column_name) 创建表时,它会显示 KEY keyname (column_name)。它是同义词的事实完美地解释了它。
“在列定义中给出键属性 PRIMARY KEY 时,也可以仅指定为 KEY。”这是什么意思?
i
informatik01

这是关于“差异”的nice description

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


问题是关于 MySQL 中 SQL 标识符 KEY 和 INDEX 的使用。不是键和索引之间的区别。
我用搜索引擎搜索了差异,这是第一个结果。在我看来,没有必要提出一个额外的问题。但是,如果您愿意,请随意这样做。
J
JayD

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

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

所以...

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

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

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


问题是关于 MySQL 中 SQL 标识符 KEY 和 INDEX 的使用。不是键和索引之间的区别。
真的?!我以不同的方式阅读了这个问题,在我看来,这个答案是唯一能说明区别的答案。
A
Anis LOUNIS aka AnixPasBesoin

它在“创建表”文档中被称为 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 仅创建索引。


A
Atulya Anand

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

虽然索引是存储在数据库中的结构,但键是严格的逻辑概念。索引帮助我们快速访问记录,而键只是唯一地标识记录。每个表都必须有一个键,但索引不是强制性的。

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


问题是关于 MySQL 中 SQL 标识符 KEY 和 INDEX 的使用。不是键和索引之间的区别。
@Josh J 即使最初的动机是询问标识符,使用搜索引擎搜索关于键和索引的差异也会产生这个主题。将问题的标题改进为更具体可能是有意义的。另一方面,在mysql中写一个关于键和索引之间差异的问题可能会被标记为重复。 =>我发现这样的补充答案非常有用。无论如何,“真实”的答案将获得最高分。所以我看不出对补充答案投反对票的理由。
我在问题中将 INDEX 和 KEY 大写以说明这一点。