小编Wil*_*yor的帖子

将十六进制值存储为字符串或整数?

我继承了一个使用 32 字节十六进制字符串集来尝试唯一标识对象的数据库。每个字符串称为一个指纹,每个对象最多可以有 20 个指纹。

我正在跨服务器迁移数据库,我注意到重新填充指纹表需要几个小时。似乎每个指纹都有一个整数 id 并存储为 varchar,指纹列上有一个索引,因此插入速度很慢。

我的问题是:重构这个设计并完全移除指纹表是否值得我花时间?我猜想对数字而不是字符串进行索引会更快,这是正确的吗?

如果设计看起来像这样:(希望这是有道理的)

Object(1,*)<----->(*,*)ObjectFingerprint(*,*)<------>(1,*)Fingerprint
 id                      object_id                          id
                         fingerprint_id                     fingerprint
Run Code Online (Sandbox Code Playgroud)

最好使用:

Object(1,*)<----->(*,*)Fingerprint
 id                     object_id
                        fingerprint
Run Code Online (Sandbox Code Playgroud)

我正在使用带有 INODb 表的 MySQL 服务器,并且我有大约 140 万个对象。

performance index

5
推荐指数
1
解决办法
6561
查看次数

标签 统计

index ×1

performance ×1