Mysql 關聯子查詢---In


Mysql的子查詢實現得非常糟糕,最糟糕的一類查詢是where條件中包含In()的子查詢語句。

select * from cteam where pid in (select boss_id from mteam where boss_id = 123456)

缺點:Mysql會將相關的外層表壓到子查詢中,它認為這樣可以更高效查找到數據行

根據explain的輸出我們可以看到,Mysql先選擇對cteam表進行全表掃描,然后根據返回的pid逐個執行子查詢,如果是一個很小的表,這個查詢糟糕的性能可能還不會引起注意,但是如果

外層的表是一個非常大的表,那么這個查詢的性能會非常糟糕。

重新SQL語句:

select c.* from cteam c right join mteam m on c.pid = m.boss_id where m.boss_id = 123456

 


免責聲明!

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



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