,想到这样做的幼稚的方法是:MySQL的:选择具有计算列的最小值行
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));
然而,“(选择名称,莱文斯坦(姓名,参数) as lev FROM my_table)“子查询,这非常昂贵(巨大的表)被重复两次,这似乎是非常低效的。
我莫名其妙,虽然你可以写:
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);
但它似乎并没有工作。
有没有一种简洁的方法来优化查询的速度?我错过了什么明显的东西?
我必须依赖临时表吗? (试图避免由于开销/复杂性,因为他们似乎并不适合非常频繁/并发查询)
从SQL忍者任何投入将不胜感激;)
这是行不通的。 – chaos 2010-09-10 18:55:45
它确实不会产生所需的结果...:/ – Vermillon 2010-09-10 21:52:46