首頁 > 資料庫 > mysql教程 > 如何在SQL中有效率地計算SHA256哈希的漢明距離?

如何在SQL中有效率地計算SHA256哈希的漢明距離?

Susan Sarandon
發布: 2024-10-25 08:53:44
原創
254 人瀏覽過

How Can I Efficiently Calculate Hamming Distance for SHA256 Hashes in SQL?

SQL 中二進位字串的漢明距離計算

尋找一種有效的方法來計算儲存在BINARY(32) 欄位。將二進位字串分解為子字串,將其轉換為整數,然後執行子字串漢明距離計算的直接方法似乎很麻煩且效率低下。

但是,有一種替代解決方案可以顯著提高效能。透過將雜湊儲存在四個BIGINT 欄位中,每個欄位包含原始資料的8 個位元組子字串,可以利用下列函數:

<code class="sql">CREATE FUNCTION HAMMINGDISTANCE(
  A0 BIGINT, A1 BIGINT, A2 BIGINT, A3 BIGINT, 
  B0 BIGINT, B1 BIGINT, B2 BIGINT, B3 BIGINT
)
RETURNS INT DETERMINISTIC
RETURN 
  BIT_COUNT(A0 ^ B0) +
  BIT_COUNT(A1 ^ B1) +
  BIT_COUNT(A2 ^ B2) +
  BIT_COUNT(A3 ^ B3);</code>
登入後複製

此函數透過執行位元異或運算來計算漢明距離並計算結果中1 的數量。這種方法比二進位字串分解方法要快得多。

此外,為了提高效率,建議使用 BIGINT 欄位而不是 BINARY 欄位來儲存雜湊。這種使用 BIGINT 的替代方法可以將執行速度提高 100 倍以上。

以上是如何在SQL中有效率地計算SHA256哈希的漢明距離?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板