首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql上索引uuid字符串时,应选择哪个哈希函数?MD5、crc64或fnv

在mysql上索引uuid字符串时,应选择哪个哈希函数?MD5、crc64或fnv
EN

Stack Overflow用户
提问于 2019-04-15 11:21:34
回答 1查看 234关注 0票数 0

我有一个列来存储uuid字符串。我添加了一个新列来存储用于索引的整数(64位)散列值。选择哪个散列函数?

代码语言:javascript
复制
1. int(md5('a306d9cb-4d75-4673-ae43-700470692521').hexdigest()[-16:], 16)
2. crc64('a306d9cb-4d75-4673-ae43-700470692521')
3. fnv.hash('a306d9cb-4d75-4673-ae43-700470692521', bits=64)

这是第三方帐户的映射表。

表示例:

代码语言:javascript
复制
openid: o00HW1KP16EvXs5whqPH2qyx667s
appid: wxb25520ae9512cabb
uid: 135435123

(openid,appid) --> uid

用于在(openid,appid)上创建复合索引。如果添加一个像hash(openid,appid)这样的整数列,可以让它更快吗?

EN

回答 1

Stack Overflow用户

发布于 2019-04-15 12:39:49

没有必要对UUID进行散列以对其进行索引。您可以将UUID存储在CHAR(36)中,或者将其转换为二进制(16)以使其更紧凑。您可以对这两种数据类型的列建立索引。

此外,从UUID创建整数散列将从UUID中删除大部分信息,使其更有可能找到重复值。您将不能对散列施加唯一约束,也不能使其成为主键。

因此,没有必要对其进行索引,而且这只会破坏使用UUID的好处。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55682200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档