我知道如何使用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)
。
答案 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)
键是一组列或表达式,我们在其上构建索引。
虽然索引是存储在数据库中的结构,但键完全是逻辑概念。
索引帮助我们快速访问记录,而密钥只是唯一地识别记录。
每个表都必须有一个密钥,但索引不是强制性的。
检查https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721