所以我在 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 秒...
为什么Mr.CAST这么慢?我在做些什么来激怒 MySQL 之神吗?
编辑:
这里要求的是 EXPLAIN 输出:
并且没有 CAST:
解释扩展: