SQL でバイナリ文字列間のハミング距離を効率的に計算するにはどうすればよいですか?
SQL でのバイナリ文字列のハミング ディスタンスの計算
問題ステートメント:
データベース テーブルは、多くの場合、SHA256 ハッシュをバイナリ値として保存します。ハミング距離は、2 つのハッシュ間のビットごとの違いの数を表し、類似性分析にとって重要な指標です。この記事の目的は、指定された値と指定された列の各ハッシュの間のハミング距離を計算する SQL ソリューションを提供することです。
既存の非効率なアプローチ:
バイナリ文字列をより小さな整数のチャンクに分割し、各チャンクのハミング距離を計算し、その結果を合計するのは、面倒でパフォーマンスが制限される方法です。
改善されたアプローチ:
単一の BINARY カラムではなく複数の BIGINT カラムにハッシュを保存すると、大幅に改善されます。パフォーマンス。これにより、複数の BIGINT 値間のハミング距離を効率的に計算できるカスタム関数を作成できます。
BIGINT のハミング距離関数:
次のカスタム関数を作成して、BIGINT 値間のハミング距離を計算できます。 4 つの 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>
使用例:
この関数を使用すると、次のクエリを使用して、指定された値までのハミング距離によってテーブル エントリを並べ替えることができます:
<code class="sql">SELECT * FROM table ORDER BY HAMMINGDISTANCE(col0, col1, col2, col3, UNHEX(<insert supplied sha256 hash here>)) ASC LIMIT 10</code>
結論:
SHA256 ハッシュを 4 つの BIGINT 列に分割し、カスタム関数を使用することは、SQL でハミング距離を計算するための非常に効率的なアプローチです。この方法では、ハッシュを BINARY 値として保存し、従来の整数ベースの計算を使用するよりもパフォーマンスが大幅に向上します。
以上がSQL でバイナリ文字列間のハミング距離を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
