表之间的MySQL关系-一个决定因素

时间:2018-08-29 12:02:34

标签: mysql sql tsql

我有一个users表,其中包含以下字段id, usernameId使用主键自动递增,我在考虑是否应该拥有username作为主键。

我还有另一个表audit_results,其中用户名是users表的外键

确定以下关系中的哪个(在用户表中将有数百万个用户)更快(假设将来会有复杂的联接查询)的决定因素是什么。

  1. audit_results.username(与user.username相关)或
  2. audit_results.id(与user.id相关)

使用varchar或int数据类型作为主键有什么区别吗?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

varchar(400)-最多400个字符,每个字符用一个字节(8位)表示,因此我们最多可以有3200位。

int(11)-根据thisint始终为四个字节(32位)。

加入时,SQL必须比较特定的值。

我认为显而易见的是,一般来说执行速度更快(可以比较多少位)。