9
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是另一个表中的主键吗?)

4

2 回答 2

13

KEY是 的同义词INDEX。除了它已经共享的复合键之外,这还会创建一个名为par_ind1ont 的索引。userIDsessionID

有关完整的详细信息,请参阅MySQLCREATE 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参考以了解默认索引类型,这些类型因表存储引擎而异。对于这样的 InnoDB 表,这是一个BTREE索引。

于 2012-04-29T14:36:49.297 回答
3

它在该列上创建一个辅助的、非唯一的索引。在这种情况下,您可以使用INDEXKEY互换。

于 2012-04-29T14:36:39.543 回答