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

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

Susan Sarandon
Susan Sarandon原創
2024-10-25 08:53:44142瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn