levenshtein_ratio
だと思います あなたが書いた(または他の場所から含まれているかもしれない)関数です。その場合、データベースサーバーは、インデックスを使用する通常の意味でそれを最適化できません。つまり、他の結合条件の結果であるレコードごとに呼び出す必要があるということです。内部結合を使用すると、これらのテーブルサイズでは非常に大きな数になる可能性があります(最大8000 * 250000 =20億)。これで、呼び出す必要がある合計回数を確認できます:
SELECT
count(*)
FROM
library a,
classifications b
WHERE
a.`release_year` = b.`year`
AND a.`id` IS NULL
それはなぜそれが遅いのかについての説明です(それを最適化する方法の質問に対する答えではありません)。これを最適化するには、参加条件に制限要因を追加して、ユーザー定義関数への呼び出し回数を減らす必要があります。