KEY关键字是什么意思?


141

在此MySQL表定义中:

CREATE TABLE groups (
  ug_main_grp_id smallint NOT NULL default '0',
  ug_uid smallint  default NULL,
  ug_grp_id smallint  default NULL,
  KEY (ug_main_grp_id)
);

什么是KEY关键字是什么意思?它不是主键,也不是外键,所以它仅仅是索引吗?如果是这样,用这种方法创建的这种索引有何特别之处KEY


1
似乎在MySQL Server 5.5中不再使用“ KEY”运算符。不知道何时删除它,但是我遇到的问题存在于5.1,而不是5.5。
倾斜

Answers:


190

http://dev.mysql.com/doc/refman/5.1/en/create-table.html引用

{INDEX|KEY}

所以KEY是一个INDEX;)


9
表示法{INDEX | KEY}通常并不意味着INDEX和KEY含义相同,或者KEY是INDEX;)
sergtk 2014年

1
@sergtk:按照MySQL手册中的符号,FOO | BAR表示可以使用关键字FOO或关键字BAR。同上,它们是同义词。
dotancohen 2014年

4
究竟!MySql手册阐明了INDEX和KEY是同义词-这就是为什么我赞成答案。但是可以从答案得出结论,不仅在这种情况下,BNF表示法{|}总是描述同义词。
sergtk 2014年

3
这是不正确的。我在Quora(请参阅用户Kristian Kohntopp)quora.com/…中找到了最佳答案:KEY是约束,INDEX是实现该约束所必需的数据结构。实际上,例如,如果您有FK,KEY key_name (user_id), CONSTRAINT foreign_key_constraint_name FOREIGN KEY (user_id) REFERENCES auth_user (id)则可能还需要指定使用什么INDEX(哈希与BTREE)。此示例显示KEY和INDEX不是同义词。
oneloop

3
不管该关键字是否过时,都没有人解释该关键字的用途。如果我有主键,那为什么还要有一个“键”呢?两个索引的意义是什么?请启发我,我对此
一无所知

36

KEY通常是的同义词INDEXPRIMARY KEY也可以像KEY在列定义中给定键属性一样指定键属性。这样做是为了与其他数据库系统兼容。

column_definition:
      data_type [NOT NULL | NULL] [DEFAULT default_value]
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
      ...

参考:http : //dev.mysql.com/doc/refman/5.1/en/create-table.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.