3

我一直在使用:

PRIMARY KEY (id), UNIQUE id (id), KEY id_2 (id)

每当我创建表格时,但我不明白做什么KEY id_2 (id)以及为什么?

我到处搜索,找不到合适的答案。谢谢!

4

4 回答 4

3

根据您的示例,我相信您正在在一列上创建三个不同的索引......这可能不是您打算做的。

首先,您正在创建一个主键:

PRIMARY KEY (id)

接下来,您将创建一个唯一索引,这不是必需的,因为您已经拥有主键......并且您将此唯一索引命名为id

UNIQUE id (id)

最后,创建名为 的第三个索引id_2

KEY id_2 (id)

相反,我认为您应该只创建主键,而放弃其他两个索引。

于 2013-02-13T19:25:56.537 回答
1

来自这个问题:为什么大多数 SQL 数据库允许定义相同的索引两次?

看起来KEY语法允许您为该键列创建命名索引。这id_2是它的名字。正如您将在相关问题中看到的那样,您可以多次指定:

CREATE TABLE `testkey` (
  `id` varchar(10) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`),
  KEY `id_2` (`id`)
)
于 2013-02-13T19:24:13.283 回答
0

id它在名为 的列上创建一个索引id_2

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] ...   | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
      [index_option] ...

换句话说,KEY是 的同义词INDEX

于 2013-02-13T19:25:09.787 回答
0

这是您的索引的名称。您正在 id 列上创建一个名为 id_2 的索引

于 2013-02-13T19:24:32.457 回答