Saya berasumsi bahwa levenshtein_ratio
adalah fungsi yang Anda tulis (atau mungkin disertakan dari tempat lain). Jika demikian, server database tidak akan dapat mengoptimalkannya dalam arti normal menggunakan indeks. Jadi ini berarti hanya perlu memanggilnya untuk setiap record yang dihasilkan dari kondisi join lainnya. Dengan gabungan dalam, itu bisa menjadi angka yang sangat besar dengan ukuran tabel tersebut (maksimum 8000*250000 =2 miliar). Anda dapat memeriksa berapa kali panggilan itu perlu dilakukan dengan ini:
SELECT
count(*)
FROM
library a,
classifications b
WHERE
a.`release_year` = b.`year`
AND a.`id` IS NULL
Itulah penjelasan mengapa lambat (bukan jawaban untuk pertanyaan bagaimana mengoptimalkannya). Untuk mengoptimalkannya, Anda mungkin perlu menambahkan faktor pembatas tambahan ke kondisi bergabung untuk mengurangi jumlah panggilan ke fungsi yang ditentukan pengguna.