我有兩個提供相同輸出的SQL查詢。 我的第一直覺是使用這樣的:兩個類似SQL查詢之間的巨大性能差異
SELECT * FROM performance_dev.report_golden_results
where id IN (SELECT max(id) as 'id' from performance_dev.report_golden_results
group by platform_id, release_id, configuration_id)
現在,這把像70秒即可完成!
搜索另一種解決辦法我試過類似的東西:
SELECT * FROM performance_dev.report_golden_results e
join (SELECT max(id) as 'id'
from performance_dev.report_golden_results
group by platform_id, release_id, configuration_id) s
ON s.id = e.id;
出人意料的是,這場耗時0.05秒即可完成!
這兩個怎麼這麼不同?
謝謝!
'''''''''''''''''''''''這就是爲什麼使用明確的「join」編寫這樣的查詢通常更好。 – 2014-10-12 08:59:30
從我記得,MySql無法正確優化子查詢,但您的第二個查詢使用連接。您需要檢查執行計劃才能正確看到它正在執行的操作 – ydaetskcoR 2014-10-12 09:01:06
查看兩個查詢的'EXPLAIN'輸出。 – Barmar 2014-10-12 09:02:34