ホームページ >データベース >mysql チュートリアル >## SQL データベースのバイナリ文字列のハミング ディスタンスを効率的に計算するにはどうすればよいでしょうか?
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>
これこの関数は、元の 32 バイトの BINARY 列の部分文字列を表す 4 つの BIGINT 列に対して動作します。各部分文字列のハミング距離を計算し、結果を合計します。
テストで実証されているように、この方法を使用すると速度が大幅に向上し、BINARY 列に基づくアプローチよりも 100 倍以上高速です。
さらに、部分文字列変換を使用して BINARY 列のハミング距離を計算する代替アプローチも紹介されていますが、パフォーマンス上の考慮事項により、BIGINT アプローチより劣ると考えられています。
以上が## SQL データベースのバイナリ文字列のハミング ディスタンスを効率的に計算するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。