我有一个列来存储uuid字符串。我添加了一个新列来存储用于索引的整数(64位)散列值。选择哪个散列函数?
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)这是第三方帐户的映射表。
表示例:
openid: o00HW1KP16EvXs5whqPH2qyx667s
appid: wxb25520ae9512cabb
uid: 135435123(openid,appid) --> uid
用于在(openid,appid)上创建复合索引。如果添加一个像hash(openid,appid)这样的整数列,可以让它更快吗?
发布于 2019-04-15 12:39:49
没有必要对UUID进行散列以对其进行索引。您可以将UUID存储在CHAR(36)中,或者将其转换为二进制(16)以使其更紧凑。您可以对这两种数据类型的列建立索引。
此外,从UUID创建整数散列将从UUID中删除大部分信息,使其更有可能找到重复值。您将不能对散列施加唯一约束,也不能使其成为主键。
因此,没有必要对其进行索引,而且这只会破坏使用UUID的好处。
https://stackoverflow.com/questions/55682200
复制相似问题