そこで、MySQL コンソールで以下を実行して、クエリの速度を妨げているものを確認するためのコントロール テストを行いました。
SELECT bbva_deductions.ded_code, SUBSTRING_INDEX(bbva_deductions.employee_id, '-' , -1) AS tt_emplid,
bbva_job.paygroup, bbva_job.file_nbr, bbva_deductions.ded_amount
FROM bbva_deductions
LEFT JOIN bbva_job
ON CAST(SUBSTRING_INDEX(bbva_deductions.employee_id, '-' , -1) AS UNSIGNED) = bbva_job.emplid LIMIT 500
実行には一貫して約 4 秒かかりました。(500行だけでは非常に高いようです)。
結合の CAST 部分を削除するだけで、0.01 秒に短縮されました...
いったいなぜCASTさんはこんなに遅いのでしょう?ここでMySQLの神々を怒らせるようなことをしていますか?
編集:
ここで要求されているのは、EXPLAIN 出力です。
そしてキャストなし:
拡張説明: