Ik neem aan dat levenshtein_ratio
is een functie die je hebt geschreven (of misschien ergens anders hebt opgenomen). Als dat zo is, zou de databaseserver dat niet kunnen optimaliseren in de normale zin van het gebruik van een index. Het betekent dus dat het het gewoon hoeft aan te roepen voor elk record dat voortvloeit uit de andere join-voorwaarden. Met een inner join kan dat een extreem groot aantal zijn met die tabelgroottes (maximaal 8000*250000 =2 miljard). U kunt het totale aantal keren controleren dat het moet worden gebeld met dit:
SELECT
count(*)
FROM
library a,
classifications b
WHERE
a.`release_year` = b.`year`
AND a.`id` IS NULL
Dat is een verklaring waarom het traag is (niet echt een antwoord op de vraag hoe het te optimaliseren). Om het te optimaliseren, moet u waarschijnlijk aanvullende beperkende factoren toevoegen aan de deelnamevoorwaarde om het aantal oproepen naar de door de gebruiker gedefinieerde functie te verminderen.