MySQL中的"KEY"关键字

10
CREATE TABLE IF NOT EXISTS `scores` (
  `userID` int(11) NOT NULL,
  `sessionID` int(11) NOT NULL,
  `points` double NOT NULL DEFAULT '0',
  PRIMARY KEY (`userID`,`sessionID`),
  KEY `par_ind1` (`userID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这行代码的含义是:

KEY `par_ind1` (`userID`)

这是什么意思?(userID 在另一个表中是主键吗?)


可能是What does the KEY keyword mean?的重复问题。 - edin1
2个回答

16

KEYINDEX的同义词。这将在userID列上创建一个名为par_ind1的索引,除了它已经与sessionID共享的复合键之外。

有关详细信息,请参见MySQL的CREATE TABLE文档,但此处相关的部分是:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    { LIKE old_tbl_name | (LIKE old_tbl_name) }
create_definition:
    col_name column_definition
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
      [index_option] ...

  /* Key/Index creation */
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
      [index_option] ...

由于未指定index_type,因此使用默认值。请参阅CREATE INDEX reference查看默认索引类型,这些类型根据表存储引擎而异。对于像这样的InnoDB表,它是一个BTREE索引。


3

它在该列上创建一个次要的、非唯一的索引。在此上下文中,您可以交替使用INDEXKEY


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接