php - 处理大型 (UUID) 作为 MySQL 表主键的最佳方法

标签 php mysql hex decimal

我有一个 UUID 字符串,我想用作我的 MySQL 表的主键,UUID 是一个 32 个字符的十六进制字符串(在 '-' 字符被剥离之后)。由于最好使用数字列 (int) 作为数据库中的主键,我想将其转换为整数但不确定处理它的最佳方式。

  1. 由于字符串的大小(即 uuid='a822ff2bff02461db45ddcd10a2de0c2'),我是否需要将其分成多个“子字符串”。
  2. 目前我在 32 位架构上运行 PHP,因此由于 PHP_INT_MAX 大小(最大 0xFFFFFFFF),无法在 PHP 中转换它。我怀疑这对 MySQL 也是同样的限制。
  3. 我不喜欢使用多个主键来解决这个问题,我宁愿使用字符串表示,即使这不是首选方法。

我可能认为这一切都是错误的,我并不反对阅读文档,因此示例或建议阅读作为回应都是可以接受的。

最佳答案

在大多数情况下,最好将 UUID/GUID 存储为 BINARY(16)。查看这些相关的 StackOverflow 问题:

转换可以(并且可能应该)在 MySQL 而不是 PHP 中完成,因此无论您使用 32 位 PHP 客户端还是 64 位都无关紧要(双关语:P)

关于php - 处理大型 (UUID) 作为 MySQL 表主键的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16122934/

相关文章:

php - 使用android volley post请求从MySQL中选择数据并将其显示在recyclerview中

php - 双语网站CMS结构——mysql、php数组、 session 、效率?

部署在 Tomcat 上的 Java 应用程序无法连接到 jdbc-mysql

mysql - 跟踪mysql DML操作源码

python-3.x - 在二进制文件中搜索所有出现的字节串

javascript - 如何在第一个下拉菜单中填充第二个下拉框(难)

php - 如何根据多个表和值分隔来选择SQL结果

mysql - 我有 2 个 mysql RDS 主服务器,需要 ec2 机器上的 1 个从服务器作为它们的从服务器。是否可以通过在ec2上运行的mariadb来实现

python - 如何在uri中传递十六进制值?

c - 我应该使用C中的十六进制数字格式来执行算术吗?