UserID 的最佳标识符是什么?64 位整数、UUID V5 还是 64 个字符的 SHA256 UID?

use*_*914 6 mysql database-design datatypes

我希望我的应用程序面向未来。最好使用的标识符类型是什么?

我正在考虑:

  1. 64 位整数
  2. 用户名
  3. 64 个字符的 SHA256

我不是在开发分布式系统,所以需要使用 UUID 吗?

另外,INTEGER连接与VARCHAR连接有多好?

最后,将用户名(唯一)和消息数据存储在同一个 MySQL 表中是否比存储用户 ID 更好?

gbn*_*gbn 8

使用整数。这是最简单和最有效的方式(尤其是对于 InnoDB)。

那是

  • 不要使用哈希或 UUID 或 varchars 代替 int
  • 有外键时不要使用自然键

原因?

  • varchar 比较需要整理 + 案例测试
  • InnoDB 中的索引架构倾向于整数字段(理想的聚集索引是窄的、数字的、单调递增的)
  • 散列和 GUID 以及 varchar 导致碎片
  • 不使用整数时更宽的数据 + 索引行
  • 64 个字符需要 64/66 个字节来存储。64 位输入需要 8 个字节

其他观察:

  • 你需要64位数字吗?