所以我在MySQL控制檯中運行以下控制測試以查看阻礙查詢速度的因素。MySQL CAST肯定需要它的甜蜜時間
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:
EXPLAIN EXTENDED:
結果已過帳 –
新輸出已發佈 –
我剛剛嘗試過,它能夠使用索引查找就好。 (有意義的,因爲它只是一個SELECT字段而不是該鍵的一部分)。我也在使用CAST()的時候對查詢進行了EXPLAIN EXTENDED嘗試,並得到了以下消息: 由於字段'emplid'上的類型或排序規則轉換,不能在索引'emplid'上使用ref訪問' –