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官方页面find任何文档。
谁能告诉我KEY和INDEX的区别是什么? 我可以看到不同的是,当我使用KEY …时,我需要重复该单词,例如KEY order_date(order_date)。
没有区别。 他们是同义词。
从CREATE TABLE
手册条目 :
KEY
通常是INDEX
的同义词。 当在列定义中给出时,键属性PRIMARY KEY
也可以被指定为KEY
。 这是为了与其他数据库系统兼容而实现的。
下面是关于“差异”的一个很好的描述:
http://discuss.fogcreek.com/joelonsoftware5/default.asp?cmd=show&ixPost=152398
“MySQL要求每个关键字都被编入索引,这是MySQL特有的实现细节来提高性能。”
键是在表内扮演特定angular色的特殊字段,键的types决定了它在表中的用途。
索引是RDBMS(数据库pipe理系统)提供的用于改善数据处理的结构。 索引与逻辑数据库结构无关。
所以…
密钥是用于识别表内logging的逻辑结构,索引是用于优化数据处理的物理结构。
资料来源:数据库devise为单纯的凡人
作者:Michael Hernandez
它在“create table”文档中被提及为INDEX
的同义词: MySQL 5.5参考手册:: 13 SQL语法语法:: 13.1数据定义语句:: 13.1.17 CREATE TABLE语法
Nos已经引用该部分,并将5.1的帮助联系起来。
就像PRIMARY KEY
为你创build一个主键和一个索引一样, KEY
只创build一个索引。
关键是我们构build索引的一组列或expression式。
-
虽然索引是存储在数据库中的结构,但键是严格的逻辑概念。
-
索引帮助我们快速访问logging,而键只是唯一地标识logging。
-
每个表都必须有一个键,但是有一个索引不是强制性的。
请查看https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721