表格列标记为唯一,表示它也被编入索引,对吧?

时间:2011-02-09 20:22:36

标签: mysql

我正在尝试设置一个mysql表。希望如下:

id (integer, auto increment, primary)
username (varchar 32, unique)
email (varchar 32, unique)

我不想在表格中允许重复的用户名或电子邮件地址。例如,在启动时,我将测试表中是否已存在提供的用户名或电子邮件 - 如果已存在,我将取消注册。

如果我将用户名和电子邮件列标记为“唯一”,这是否也意味着它们已被编入索引?我希望将它们编入索引,以便我可以尽可能高效地执行已存在的检查,

由于

2 个答案:

答案 0 :(得分:1)

是的,他们将被编入索引。这也是数据库如何尽可能有效地完成已存在的检查。

答案 1 :(得分:0)

是的,它会隐式创建一个索引。

http://dev.mysql.com/doc/refman/5.1/en/create-table.html

  

UNIQUE索引创建一个约束,使索引中的所有值必须是不同的。如果您尝试添加具有与现有行匹配的键值的新行,则会发生错误。对于所有引擎,UNIQUE索引允许可以包含NULL的列的多个NULL值。