我有一个users
表,其中包含以下字段id, username
。Id
使用主键自动递增,我在考虑是否应该拥有username
作为主键。
我还有另一个表audit_results
,其中用户名是users
表的外键
确定以下关系中的哪个(在用户表中将有数百万个用户)更快(假设将来会有复杂的联接查询)的决定因素是什么。
audit_results.username
(与user.username相关)或audit_results.id
(与user.id相关)使用varchar或int数据类型作为主键有什么区别吗?
答案 0 :(得分:1)
varchar(400)
-最多400个字符,每个字符用一个字节(8位)表示,因此我们最多可以有3200位。
int(11)
-根据this,int
始终为四个字节(32位)。
加入时,SQL必须比较特定的值。
我认为显而易见的是,一般来说执行速度更快(可以比较多少位)。