為什么子查詢比連接查詢(LEFT JOIN)效率低


MySQL從4.1版本開始支持子查詢,使用子查詢進行SELECT語句嵌套查詢,可以一次完成很多邏輯上需要多個步驟才能完成的SQL操作。子查詢雖然很靈活,但是執行效率並不高。
那么問題來了,什么是子查詢?為什么它的效率不高?
子查詢:把內層查詢結果當作外層查詢的比較條件

示例:

select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);
執行子查詢時,MYSQL需要創建臨時表,查詢完畢后再刪除這些臨時表,所以,子查詢的速度會受到一定的影響,這里多了一個創建和銷毀臨時表的過程。

優化方式:

可以使用連接查詢(JOIN)代替子查詢,連接查詢不需要建立臨時表,因此其速度比子查詢快。



作者:michael_wlq
鏈接:https://www.jianshu.com/p/cb1e14c0ac39
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM