我有一个users
表,其中包含以下字段:id、username
。Id
是使用主键自动递增的,我是思考我是否也应该将用户名
作为主键。
我有另一个表,audit_results
,其中用户名作为users
表的外键
决定以下哪种关系(users表中有数百万用户)会更快(假设将来会有复杂的连接查询)的决定因素是什么。
audit_results.username
(与 user.username 相关)或audit_results.id
(与 user.id 相关)
使用 varchar 或 int 数据类型作为主键有什么区别吗?
最佳答案
varchar(400)
- 最多 400 个字符,每个字符由一个字节(8 位)表示,因此最多可以有 3200 位。
int(11)
- 根据this , int
始终为四个字节(32 位)。
连接时,SQL 必须比较特定值。
我认为很明显哪个通常会执行得更快(可以比较多少位)。
关于Mysql 表之间的关系 - 决定因素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52076975/