我一直在使用:
PRIMARY KEY (id), UNIQUE id (id), KEY id_2 (id)
每当我创建表格时,但我不明白做什么KEY id_2 (id)
以及为什么?
我到处搜索,找不到合适的答案。谢谢!
根据您的示例,我相信您正在在一列上创建三个不同的索引......这可能不是您打算做的。
首先,您正在创建一个主键:
PRIMARY KEY (id)
接下来,您将创建一个唯一索引,这不是必需的,因为您已经拥有主键......并且您将此唯一索引命名为id
:
UNIQUE id (id)
最后,创建名为 的第三个索引id_2
:
KEY id_2 (id)
相反,我认为您应该只创建主键,而放弃其他两个索引。
来自这个问题:为什么大多数 SQL 数据库允许定义相同的索引两次?
看起来KEY
语法允许您为该键列创建命名索引。这id_2
是它的名字。正如您将在相关问题中看到的那样,您可以多次指定:
CREATE TABLE `testkey` (
`id` varchar(10) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`),
KEY `id_2` (`id`)
)
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
。
这是您的索引的名称。您正在 id 列上创建一个名为 id_2 的索引