簡體   English   中英

哪個哈希函數可以選擇在mysql上索引uuid字符串? md5,crc64或fnv

[英]which hash function to choose for indexing uuid string on mysql? md5,crc64 or fnv

我有一個列存儲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),可以加快速度嗎?

沒有必要對UUID進行哈希處理以對其進行索引。 您可以將UUID存儲在CHAR(36)中,或者將其轉換為BINARY(16)以使其更緊湊。 您可以在這些數據類型之一的列上創建索引。

此外,從UUID創建整數散列將從UUID中刪除大部分信息,使其更有可能找到重復值。 您將無法在哈希上設置唯一約束,也不能將其作為主鍵。

所以沒有必要對它進行索引,它只會破壞首先使用UUID的好處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM