Předpokládám, že levenshtein_ratio
je funkce, kterou jste napsali (nebo možná zahrnuli odjinud). Pokud ano, databázový server by to nebyl schopen optimalizovat v normálním smyslu použití indexu. Znamená to tedy, že jej jednoduše potřebuje zavolat pro každý záznam, který je výsledkem jiných podmínek spojení. S vnitřním spojením by to mohlo být extrémně velké číslo s těmito velikostmi tabulek (maximálně 8000*250000 =2 miliardy). Celkový počet, kolikrát by bylo potřeba zavolat, můžete zkontrolovat tímto:
SELECT
count(*)
FROM
library a,
classifications b
WHERE
a.`release_year` = b.`year`
AND a.`id` IS NULL
To je vysvětlení, proč je pomalý (není to vlastně odpověď na otázku, jak to optimalizovat). Chcete-li ji optimalizovat, pravděpodobně budete muset do podmínky spojení přidat další omezující faktory, abyste snížili počet volání uživatelem definované funkce.