目前,我有一个包含1300万行的数据库,我们使用uuid
作为主键。每次我们进行数据库迁移时,完成一个表需要几个小时。查询性能似乎也很差。
在谷歌搜索和阅读一些博客后,他们建议从uuid
转换为binary(16)
,但转换后的值不可读且使用起来很尴尬。在我的Ruby代码中也很难使用它。
是否有另一种解决方案可以在uuid
旁边的MySQL中获得全球唯一标识?
mysql> select UNHEX(REPLACE('A4E7890F-A188-4663-89EB-176D94DF6774','-',''));
+---------------------------------------------------------------+
| UNHEX(REPLACE('A4E7890F-A188-4663-89EB-176D94DF6774','-','')) |
+---------------------------------------------------------------+
| ���Fc��m��gt |
我检查了,mongodb也有ObjectId
,只有12个字节。是否有可能在MySQL服务器中使用它?我怎样才能利用它在MySQL中使用?
答案 0 :(得分:1)
你必须为你的应用程序测试这个,但是对于非常大的数据集,我希望你能提高性能:
比较冗长的UUID可能不如整数键有效,所以即使你仍在大量使用UUID列,你也一定要以这种方式获得性能提升。但是,没有什么可以替代自己进行基准测试。