Il modo ingenuo di fare questo che viene in mente sarebbe:MySQL: Selezione delle righe aventi valore minimo di una colonna calcolata
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));
Tuttavia il "(SELECT nome, levenshtein (nome, parametro) as lev FROM my_table) "la subquery, che è molto costosa (tabella enorme) viene ripetuta due volte, il che sembra orribilmente inefficiente.
io in qualche modo anche se si potrebbe scrivere:
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);
Ma non sembra funzionare.
C'è un modo pulito per ottimizzare quella query per la velocità? Mi sono perso qualcosa di ovvio?
Devo fare affidamento su tabelle temporanee? (cercando di evitare che a causa del sovraccarico/complessità non sembrano appropriati per molto frequenti domande/simultanee)
Qualunque input da ninja SQL sarebbe molto apprezzato;)
Non funziona. – chaos
E in effetti non produce il risultato desiderato ...:/ – Vermillon