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中文网其他相关文章!