1. 程式人生 > 其它 >mysql的子查詢效率

mysql的子查詢效率

對於mysql來說,我們並不推薦使用子查詢

由於在mysql中,執行子查詢時,需要建立臨時表,查詢完畢之後再刪除這些臨時表,

所以子查詢的速度會受到一些影響,這裡多了一個創建於銷燬臨時表的過程

另外由於子查詢使用的是關聯查詢,

那怎麼解決這個問題呢?

這裡我們推薦使用join來代替子查詢,因為join不需要建立臨時表來查詢

因此儘量使用連結來代替子查詢,不過需要注意的是,使用連線查詢,則兩個連結表之間必須有相關聯的欄位

一個表的主鍵在另一個表中為外來鍵等,才可以使用。

例如:

select sname from student where sid in (select sid from class where
cid=2) //這時mysql會建立一個cid=2的臨時表,從這個表中查詢cid=2的sid //接下來我們使用join連線查詢 select sname from student s,class c where s.sid=c.sid and cid=2
//使用連線查詢,則不會有臨時表的生成。