Na twoim miejscu wolałbym porównywać deskryptory w kodzie niż w SQL. SQL nie jest do tego przeznaczony. Zrobiłbym następujące:-
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.
Jednak w tym celu wolałbym użyć wbudowanej klasy FileStorage OpenCV, która zapewnia I/O na plikach XML i YAML; rozwiązuje problem ręcznego analizowania wartości deskryptorów.