[英]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.