1

目前,我有一个包含 1300 万行的数据库,我们将uuid其用作主键。每次我们进行数据库迁移时,完成一个表需要几个小时。查询性能似乎也很差。

在谷歌搜索和阅读一些博客后,他们建议将 from 转换uuidbinary(16),但转换后的值不可读且使用起来非常尴尬。在我的 Ruby 代码中也很难使用。

是否有替代解决方案可以在 MySQL 中获得全局唯一标识符uuid

mysql> select UNHEX(REPLACE('A4E7890F-A188-4663-89EB-176D94DF6774','-',''));
+---------------------------------------------------------------+
| UNHEX(REPLACE('A4E7890F-A188-4663-89EB-176D94DF6774','-','')) |
+---------------------------------------------------------------+
| ���Fc��m��gt                                                       |

我查了一下,mongodb也有ObjectId,只有12个字节。是否可以在 MySQL 服务器中使用它?我如何利用它在 MySQL 中使用?

4

1 回答 1

1

回答

您将不得不为您的应用程序对此进行测试,但是对于非常大的数据集,如果您执行以下操作,我希望性能会有所提高:

  1. 使用AUTO_INCREMENT列作为主键,因为 MySQL 已为此进行了优化。
  2. 索引您的 UUID 列,以便您可以在不进行全表扫描的情况下进行快速查找。

比较冗长的 UUID 不可能像整数键一样有效,因此即使您仍在大量使用 UUID 列,也绝对应该通过这种方式获得性能提升。但是,没有什么可以替代自己进行基准测试。

相关问题

MySQL中的UUID性能?

于 2012-06-07T13:07:15.300 回答