Calcul de la distance de Hamming sur les chaînes binaires en SQL
Pour calculer efficacement la distance de Hamming entre les chaînes binaires stockées dans les bases de données SQL, l'utilisation de BINARY colonnes n’est pas recommandé en raison de performances médiocres. Envisagez plutôt de diviser les données en plusieurs colonnes BIGINT pour représenter les sous-chaînes des données d'origine.
En suivant cette approche, vous pouvez créer une fonction personnalisée comme celle fournie ci-dessous :
<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>
Ceci La fonction fonctionne sur 4 colonnes BIGINT représentant les sous-chaînes de la colonne BINARY d'origine de 32 octets. Il calcule la distance de Hamming de chaque sous-chaîne et additionne les résultats.
L'utilisation de cette méthode améliore considérablement la vitesse, comme l'ont démontré les tests, où elle est plus de 100 fois plus rapide que l'approche basée sur les colonnes BINAIRES.
De plus, une approche alternative utilisant des conversions de sous-chaînes pour calculer la distance de Hamming sur les colonnes BINARY est présentée, mais elle est considérée comme inférieure à l'approche BIGINT en raison de ses considérations de performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!