理解MYSQL复合索引
我一直在阅读一些代码,遇到理解MYSQL复合索引,mysql,Mysql,我一直在阅读一些代码,遇到唯一关键用户名(用户名、电子邮件) 为什么在这个复合索引中重复用户名?为什么不仅仅是唯一密钥(用户名、电子邮件)?第一个用户名是密钥的名称,它不引用列。您可以随意命名索引,例如: UNIQUE KEY uniq_user_name_email (User_name, Email) 索引名不是必需的,但如果以后必须在此索引上运行命令,例如DROP index uniq\u user\u name\u email,则该名称非常有用 以下是中的完整语法: 第一个User\u
唯一关键用户名(用户名、电子邮件)
为什么在这个复合索引中重复用户名?为什么不仅仅是
唯一密钥(用户名、电子邮件)
?第一个用户名是密钥的名称,它不引用列。您可以随意命名索引,例如:
UNIQUE KEY uniq_user_name_email (User_name, Email)
索引名不是必需的,但如果以后必须在此索引上运行命令,例如DROP index uniq\u user\u name\u email
,则该名称非常有用
以下是中的完整语法:
第一个User\u name
是键的名称,它不引用列。您可以随意命名索引,例如:
UNIQUE KEY uniq_user_name_email (User_name, Email)
索引名不是必需的,但如果以后必须在此索引上运行命令,例如DROP index uniq\u user\u name\u email
,则该名称非常有用
以下是中的完整语法:
这被称为共同唯一索引。当两个字段一起考虑时,它们的值不能重复,但单个字段可能重复
例如,用户名列中可能有几个名为Tim的条目,电子邮件字段中可能有几个名为entires的条目tim@example.com但是,只能有一个username=tim,电子邮件=tim@example.com
如果您希望用户名是唯一的(通常情况下),则需要使该列自身唯一(您也可以使其成为主键)。这称为一个唯一索引。当两个字段一起考虑时,它们的值不能重复,但单个字段可能重复
例如,用户名列中可能有几个名为Tim的条目,电子邮件字段中可能有几个名为entires的条目tim@example.com但是,只能有一个username=tim,电子邮件=tim@example.com
如果您希望用户名是唯一的(通常情况下),则需要使该列本身是唯一的(您也可以使其成为主键)。它是索引的名称。您可以根据需要更改名称
如果您考虑的是索引的顺序,那就很重要了
因此,两列索引的排序类似于电话簿的排序:首先按姓氏排序,然后按名字排序。这意味着两列索引不支持仅在第二列上搜索;这就像是按名字搜索电话簿。这是索引的名称。您可以根据需要更改名称
如果您考虑的是索引的顺序,那就很重要了
因此,两列索引的排序类似于电话簿的排序:首先按姓氏排序,然后按名字排序。这意味着两列索引不支持仅在第二列上搜索;这就像是按名字搜索电话号码簿。如果您不指定键名,则自动指定键名。另外,在“创建”(从剪切粘贴)过程中,请注意不要复制密钥名,因为这样会出错。如果不指定名称,则始终可以通过show create table myTableName
或show index from myTableName查看它们代码>如果未指定键名,则自动指定。另外,在“创建”(从剪切粘贴)过程中,请注意不要复制密钥名,因为这样会出错。如果不指定名称,则始终可以通过show create table myTableName
或show index from myTableName查看它们代码>