SQL:KEY id_2有什么作用?

时间:2013-02-13 19:18:03

标签: mysql sql indexing key

我一直在使用:

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

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

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

4 个答案:

答案 0 :(得分:3)

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

首先,您正在创建主键:

PRIMARY KEY (id)

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

UNIQUE id (id)

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

KEY id_2 (id)

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

答案 1 :(得分:1)

从这个问题:Why most SQL databases allow defining the same index twice?

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

CREATE TABLE `testkey` (
  `id` varchar(10) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`),
  KEY `id_2` (`id`)
)

答案 2 :(得分:0)

这是索引的名称。您正在id列

上创建名为id_2的索引

答案 3 :(得分:0)

它在名为id的{​​{1}}列上创建索引。

来自documentation for the MySQL CREATE TABLE声明:

id_2

换句话说,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的同义词。