Si yo fuera usted, preferiría comparar los descriptores en el código, en lugar de SQL. SQL no está hecho para eso. Yo haría lo siguiente:-
1. Pre-load N descriptors from SQL onto memory.
2. Compare distances to query descriptor, descriptor by descriptor.
3. If distance<threshold, push to possiblematches.
4. When you reach N/2 descriptors, push the next N.
5. Compare all matches, choose the best one or the best D descriptors, as per your requirement.
Sin embargo, para esto, prefiero usar la clase FileStorage incorporada de OpenCV que proporciona E/S en archivos XML y YAML; resuelve el dolor de cabeza de analizar manualmente los valores de los descriptores.