La forma ingenua de hacer esto que viene a la mente sería:MySQL: Al seleccionar las filas que tienen un valor mínimo de una columna calculada
SELECT name, lev FROM
(SELECT name, levenshtein(name, *parameter*) as lev FROM my_table)
WHERE
lev = (SELECT MIN(lev) FROM
(SELECT name, levenshtein(name, *parameter*) as lev FROM my_table));
Sin embargo, el "(SELECT nombre, levenshtein (nombre, parámetro) como lev FROM my_table) "subconsulta, que es muy costosa (mesa enorme) se repite dos veces, lo que parece terriblemente ineficiente.
de alguna manera, aunque se podría escribir:
SELECT name, lev FROM
(SELECT name, levenshtein(name, *parameter*) as lev FROM my_table) as my_temp_table
WHERE
lev = (SELECT MIN(lev) FROM my_temp_table);
Pero no parece funcionar.
¿Existe alguna forma clara de optimizar esa consulta en cuanto a velocidad? ¿Me perdí algo obvio?
¿Debo confiar en las tablas temporales? (tratando de evitar que debido a la sobrecarga/complejidad, ya que no parecen apropiadas para consultas muy frecuentes/concurrentes)
Cualquier entrada de ninjas SQL sería muy apreciada;)
Eso no va a funcionar. – chaos
Y de hecho no produce el resultado deseado ...:/ – Vermillon