Distancia de Hamming en cadenas binarias en SQL

Tengo una tabla en mi base de datos donde almaceno hash SHA256 en una columna BINARY (32). Estoy buscando una manera de calcular la distancia de Hamming de las entradas en la columna a un valor proporcionado, es decir, algo como:

SELECT * FROM table 
  ORDER BY HAMMINGDISTANCE(hash, UNHEX(<insert supplied sha256 hash here>)) ASC 
  LIMIT 10

(en caso de que se pregunte, la distancia de Hamming de las cadenas A y B se define comoBIT_COUNT(A^B), donde ^ es el operador XOR bit a bit y BIT_COUNT devuelve el número de 1s en la cadena binaria).

Ahora, sé que tanto el operador ^ como la función BIT_COUNT solo funcionan en INTEGER y, por lo tanto, diría que probablemente la única forma de hacerlo sería dividir las cadenas binarias en las subcadenas, convertir cada subcadena binaria en un entero, calcular el Distancia de Hamming por subcadenas y luego agréguelas. El problema con esto es que suena terriblemente complicado, no eficiente y definitivamente no elegante. Mi pregunta, por lo tanto, es: ¿podría sugerir alguna forma mejor? (tenga en cuenta que estoy en un alojamiento compartido y, por lo tanto, no puedo modificar el servidor de base de datos o cargar bibliotecas)

edit (1): Obviamente, cargar toda la tabla en PHP y hacer los cálculos allí sería posible, pero prefiero evitarlo porque esta tabla probablemente crecerá bastante.

edit (2): el servidor DB es MySQL 5.1

edit (3): Mi respuesta a continuación contiene el código que acabo de describir arriba.

edit (4): acabo de descubrir que usar 4 BIGINT para almacenar el hash en lugar de un BINARY (32) produce mejoras de velocidad masivas (más de 100 veces más rápido). Vea los comentarios a mi respuesta a continuación.

Respuestas a la pregunta(2)

Su respuesta a la pregunta