php - Mysql PK 和 FK char(36) 与 int(10)

标签 php mysql optimization indexing uuid

我读到如果表键是整数而不是 char(36) UUID,mysql 可以更好地处理索引和搜索。

是否值得转换为 int(10)?

注意:我们只使用 1 台服务器,目前必须计划同时使用多个数据库,因此消除了使用 UUID 的一个重要原因。如果有区别的话,我们的表也是 InnoDB。

提前致谢。

最佳答案

通常 RDBMS 可以比其他数据类型更有效地处理整数键作为 PK。原因是它如何为列建立索引,所以是的:只要您不需要字符串(或其他类型的)键,您应该始终使用整数。

但是:CHAR(36) 和 INT(10) 远非相等,因为 INT(10) 比 CHAR(36) 小。我不知道,如果您需要这么多不同的 key ,但您应该记住这一点。

更新,完成最后一段: INT(10) 是 32 位,CHAR(36) 是 36 - ^Byte^(= 288 位)。这不仅意味着 INT 占用的空间更少,还意味着 CHAR(36) 具有大约 4 倍的不同键。

关于php - Mysql PK 和 FK char(36) 与 int(10),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5091045/

相关文章:

php - Laravel 之外的 Laravel IoC

php - MySQL,检查结果是否有值(value),如果没有则取另一个

MYSQL将单个列中的两个不同值拆分为两列

numpy - 使用 numpy 计算二进制掩码 IOU 的最快方法

c# - 使用静态 Regex.IsMatch 与创建 Regex 实例

php - Guzzle 无法在一台服务器上运行,但可以在另一台 PHP FB SDK 上运行

php - 从外部网站登录

mysql - 无法使用 Joomla 连接到 MySQL,并检查了 'Site offline'

php - Mysql连接错误

codeigniter - AngularJS 中的实时更新