我一直在阅读一些代码并遇到UNIQUE KEY User_name (User_name,Email)
为什么在此复合索引中重复user_name?为什么不只是UNIQUE KEY (User_name,Email)
?
答案 0 :(得分:2)
第一个User_name
是密钥的名称,它不是指列。您可以根据需要为索引命名,例如:
UNIQUE KEY uniq_user_name_email (User_name, Email)
索引名称不是必需的,但是如果您必须稍后在此索引上运行命令,例如DROP INDEX uniq_user_name_email
,则它非常有用。
以下是MySQL documentation的完整语法:
[CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type](index_col_name,...) [index_option]
答案 1 :(得分:2)
这被称为一个独特的索引。当两个字段一起考虑时,它们的值不能重复,但各个字段可能会重复。
例如,在用户名栏中可能有几个名为 Tim 的条目,在电子邮件字段中可能有几个名为tim@example.com的条目但是只有一个username=tim, email=tim@example.com
如果您希望用户名是唯一的(通常就是这种情况),您需要使该列独有(您也可以将其作为主键)。
答案 2 :(得分:1)
这是索引的名称。您可以根据需要更改名称。
如果您正在考虑索引的顺序,这很重要。
因此,两列索引的排序类似于电话目录的排序:首先按姓氏排序,然后按名字排序。这意味着两列索引不支持单独搜索第二列;这就像用名字搜索电话簿一样。