mysql的子查詢效率
阿新 • • 發佈:2021-07-02
對於mysql來說,我們並不推薦使用子查詢
由於在mysql中,執行子查詢時,需要建立臨時表,查詢完畢之後再刪除這些臨時表,
所以子查詢的速度會受到一些影響,這裡多了一個創建於銷燬臨時表的過程
另外由於子查詢使用的是關聯查詢,
那怎麼解決這個問題呢?
這裡我們推薦使用join來代替子查詢,因為join不需要建立臨時表來查詢
因此儘量使用連結來代替子查詢,不過需要注意的是,使用連線查詢,則兩個連結表之間必須有相關聯的欄位
一個表的主鍵在另一個表中為外來鍵等,才可以使用。
例如:
select sname from student where sid in (select sid from class wherecid=2) //這時mysql會建立一個cid=2的臨時表,從這個表中查詢cid=2的sid //接下來我們使用join連線查詢 select sname from student s,class c where s.sid=c.sid and cid=2
//使用連線查詢,則不會有臨時表的生成。