Heim > Datenbank > MySQL-Tutorial > Wie kann ich die Hamming-Distanz für SHA256-Hashes in SQL effizient berechnen?

Wie kann ich die Hamming-Distanz für SHA256-Hashes in SQL effizient berechnen?

Susan Sarandon
Freigeben: 2024-10-25 08:53:44
Original
271 Leute haben es durchsucht

How Can I Efficiently Calculate Hamming Distance for SHA256 Hashes in SQL?

Berechnung der Hamming-Distanz in SQL für Binärzeichenfolgen

Die Herausforderung besteht darin, eine effiziente Methode zur Berechnung der Hamming-Distanz zwischen gespeicherten SHA256-Hashes zu finden eine BINARY(32)-Spalte. Der unkomplizierte Ansatz, die Binärzeichenfolgen in Teilzeichenfolgen zu zerlegen, sie in ganze Zahlen umzuwandeln und teilzeichenfolgenweise Hamming-Distanzberechnungen durchzuführen, erscheint umständlich und ineffizient.

Es gibt jedoch eine alternative Lösung, die die Leistung erheblich verbessert. Durch das Speichern des Hashs in vier BIGINT-Spalten, die jeweils einen 8-Byte-Teilstring der Originaldaten enthalten, wird es möglich, die folgende Funktion zu verwenden:

<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>
Nach dem Login kopieren

Diese Funktion berechnet die Hamming-Distanz durch bitweise XOR-Operationen und Zählen der Anzahl der Einsen in den Ergebnissen. Dieser Ansatz ist erheblich schneller als die binäre String-Zerlegungsmethode.

Zusätzlich wird zur Verbesserung der Effizienz empfohlen, BIGINT-Spalten anstelle einer BINARY-Spalte zum Speichern des Hashs zu verwenden. Diese alternative Methode mit BIGINTs kann zu einer über 100-mal schnelleren Ausführung führen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Hamming-Distanz für SHA256-Hashes in SQL effizient berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage