我一直在使用:
PRIMARY KEY (id), UNIQUE id (id), KEY id_2 (id)
每当我创建一个表格,但我不明白KEY id_2 (id)
做什么以及为什么?
我到处搜索,找不到合适的答案。谢谢!
答案 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
的同义词。