SQL 中二进制字符串的汉明距离计算
为了有效计算存储在 SQL 数据库中的二进制字符串之间的汉明距离,使用 BINARY由于性能较差,不推荐使用列。相反,请考虑将数据拆分为多个 BIGINT 列来表示原始数据的子字符串。
按照这种方法,您可以创建一个自定义函数,如下所示:
<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>
This函数对 4 个 BIGINT 列进行操作,这些列表示原始 32 字节 BINARY 列的子字符串。它计算每个子字符串的汉明距离并对结果求和。
使用此方法可以显着提高速度,如测试所示,它比基于 BINARY 列的方法快 100 倍以上。
此外,还提出了一种使用子字符串转换来计算 BINARY 列上的汉明距离的替代方法,但由于其性能考虑,它被认为不如 BIGINT 方法。
以上是## 如何高效计算 SQL 数据库中二进制字符串的汉明距离?的详细内容。更多信息请关注PHP中文网其他相关文章!