簡體   English   中英

Java字符串哈希碼作為Mysql ID

[英]Java String hashcode as Mysql ID

該場景類似於此描述。

我已經為用戶存儲使用了典型的mysql表,當前,用戶ID是設置為自動增量的一個整數。 很多API rest接口都使用用戶別名(唯一)來查找用戶,然后,我想用alias.hashcode()(即一個整數)實現用戶ID,以便每次都直接查找ID。 。

用一個Java字符串哈希碼實現Mysql ID是一個好主意嗎? 會提高性能嗎?

不要使用String hashCode作為ID,因為它不是唯一的。 兩個不同的字符串可能具有相同的hashCode。 我假設您的ID應該是唯一的。

我認為這不是一個好主意。 鴿子洞原理規定(來自Wikipedia) 如果將n項目放入m容器中,且n > m ,則至少一個容器必須包含一個以上的項目 基本上,您的解決方案無法處理沖突,並且哈希很可能發生沖突。

只需在別名列上添加索引,然后直接通過別名查詢數據庫。 使用別名哈希碼或其他派生詞作為id有兩個問題。 首先,正如其他人指出的那樣,哈希碼並不是唯一的(可以通過將id類型更改為字符串,並使用摘要而不是哈希來解決。與摘要的沖突雖然仍然可能,但極不可能發生)。 其次,如果用戶更改了別名,則該值將與ID不同步。 如果您的應用程序具有這種功能,那么這種情況要么不可能發生,要么不重要,那么您根本就不需要ID,並且可以通過別名直接識別用戶。

暫無
暫無

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

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