用户名/密码在单独的表或用户表中?

用户名/密码在单独的表或用户表中?

问题描述:

我正在运行一个社交网站,我目前在用户表中拥有最主要的用户数据(真实姓名,用户名,电子邮件,密码,性别等)。在设计方面,将用户名+密码移到单独的表中会有性能改进吗?用户名/密码在单独的表或用户表中?

我正在使用mysql。

+0

http://*.com/questions/1086896/db-design-members-table-separate-or-all-in-one-table – 2010-11-09 13:09:56

由于表的尺寸较小,只需要用户名和密码的身份验证查询运行速度会稍快一些。

但是,如果你创建(username, password_hash)一个综合指数,它会更快,因为这样的疑问:

SELECT password_hash 
FROM users 
WHERE username = 'myusername' 

只需要指数运行(这将在计划显示using index) 。

+0

无需索引password_hash,因为用户名最可能是唯一的。总是返回0或1行的查询。 – cherouvim 2010-11-09 13:15:29

+0

索引中password_hash的目的不是为了使其唯一,而是为了使其更快,因为Quassnoi声明在找到该行后不需要转到表数据。 – 2010-11-09 13:26:44

+0

无论用户名和密码在哪里,都不需要为两个字段建立索引,因为用户名可能是唯一的。查询'user =?并且pass =?'将使用用户名的唯一索引非常快地返回,而不管密码是什么。 – cherouvim 2010-11-09 13:29:58