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