mysql - 我应该在 MySQL 中对 ids/uuid(主键)使用 int 还是 char?

标签 mysql

我几乎所有的表都使用 id,你永远不知道它们什么时候派上用场。但是今天我读到这个...

要格外小心,确保按照惯例,您的“id”列(或主键)是:

char(36) 而不是 varchar(36)

CakePHP 将使用这两种定义,但是您将牺牲大约 50% 的数据库性能(尤其是 MySQL)。这在更复杂的 SELECT 中最为明显,这可能需要一些 JOIN 或计算。

我想知道...为什么还要使用基于文本的东西,而你只需要保存整数?我非常关心为正确的内容使用正确的格式,所以我想知道 char 是否比整数有任何性能改进?

最佳答案

我强烈建议使用整数。我正在为我的论文做一些建模,我在处理大型数据集。我必须创建一个包含大约 70.000.000 行的表。我的主键是 varchar + int。一开始,创建 5 位数行数的一个周期需要 5 分钟,很快就变成了 40。删除主键解决了我的性能问题。我猜这是因为确保唯一性并且它变得越来越耗时。当我的主键是 int 时,我没有类似的问题。 不过这是个人经验,所以也许有人可以给出更理论化和更可靠的答案。

关于mysql - 我应该在 MySQL 中对 ids/uuid(主键)使用 int 还是 char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7205357/

相关文章:

c# - MySQL 基础架构最佳实践

c# - 如何配置多对一关系?

php - 聚合多个表并将某些列显示为一个

mysql - 获取组的最小值的记录

php - 使用选中复选框中的选项从 mySQL 中检索结果

php - 更新查询不会更新我的产品列表

MySQL 错误 1064 和 1146

javascript - 未捕获的语法错误 : Unexpected token < in JSON at position 0 at Function. 解析 [as parseJSON] (<anonymous>)

mysql - Rails 使用 id 创建临时对象

php - MySQL/PHP - 文本格式