Mysql SQL:对pokemon\u master\u id列使用UNIQUE
EDITED:我知道你们中的一些人可能想知道为什么我的SQL代码中有两个“id”值。我已经在下面这个问题的评论中说明了为什么在我的特殊情况下似乎需要它。 给出了创建pokemon_用户表的以下SQL代码:Mysql SQL:对pokemon\u master\u id列使用UNIQUE,mysql,sql,indexing,unique-index,Mysql,Sql,Indexing,Unique Index,EDITED:我知道你们中的一些人可能想知道为什么我的SQL代码中有两个“id”值。我已经在下面这个问题的评论中说明了为什么在我的特殊情况下似乎需要它。 给出了创建pokemon_用户表的以下SQL代码: CREATE TABLE pokemon_users ( user_id BIGINT NOT NULL AUTO_INCREMENT, pokemon_master_id BIGINT NOT NULL UNIQUE, message varchar(255), PRIMARY KEY (u
CREATE TABLE pokemon_users (
user_id BIGINT NOT NULL AUTO_INCREMENT,
pokemon_master_id BIGINT NOT NULL UNIQUE,
message varchar(255),
PRIMARY KEY (user_id)
)
问题1:是否会为pokemon\u master\u id列创建索引
问题2:如果是,为主键(用户id)创建的索引与口袋妖怪主id索引之间的区别是什么?问题1是。唯一索引
问题2:主键用户id也是唯一的索引。不同之处在于,一个表上只能有一个主键,但有许多唯一索引。我最初的评论不太正确:主索引(默认情况下)决定物理存储顺序,而唯一索引则不是这样。但是,在大多数SQL版本中,您可以更改聚集的索引。在这种情况下,聚集索引将决定物理存储顺序。在MySQL中,使用“engine=InnoDB”时,
主键总是唯一的(而不仅仅是“默认”)并与数据聚集在一起。对于同一个用户,您真的需要两个唯一的数字吗?@Rick James对于我的特定情况是,嗯,至少出于技术原因,这是我采用的解决方案。例如,假设您使用Facebook SDK For PHP并获取用户的Facebook id,然后在您的网站中,您需要为每个用户公开显示一个唯一的值。出于安全考虑,我认为显示facebook提供给您的facebook_id是不好的,因此创建一个不同的唯一id在这种情况下是合适的,您是否同意?您提供了一个很好的案例。