Mysql 表之间的关系 - 决定因素

标签 mysql sql tsql

我有一个users表,其中包含以下字段:id、usernameId是使用主键自动递增的,我是思考我是否也应该将用户名作为主键。

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

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

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

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

enter image description here

enter image description here

最佳答案

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

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

连接时,SQL 必须比较特定值。

我认为很明显哪个通常会执行得更快(可以比较多少位)。

关于Mysql 表之间的关系 - 决定因素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52076975/

相关文章:

c# - 如何创建 mysql 更新查询以在 c#.net windows 应用程序的一条语句中更新多行

java - 从用户获取数据然后将其插入javadb

sql - Postgresql:违反检查约束。失败的行包含

sql - 使用 CTE 优化时态表

php - 从当前帖子获取记录

mysql - 如何使用 MySQL 分区做到这一点

php - 添加了 if else 参数和从数据库中丢失的变量

php - 对来自 MySQL 的显示数据进行分组

sql - 使用 SQL 将逗号分隔的字符串表行拆分为单独的行

sql-server - 为什么 T-SQL 事务不是线程安全的?