優化子查詢sql語句為內連接


背景:

  希望提高查詢的效率,從sql語句中頻繁出現的子查詢入手。

數據表如下:Student表中的CityCode對應於City表中的Code。

Student表:                      City表:

子查詢方式:

sql語句如下:

1 select * from Student 
2 where CityCode 
3 in
4 (select Code from City)

內連接方式:
sql語句如下:

1 select a.* from 
2 Student a inner join City b
3 on a.CityCode=b.Code

二者的檢索結果一致,如圖:

 

對於簡單檢索而言,尤其是在數據量小的情況下,二者並無差異,可能會引起同學的質疑,憑什么說連接的方式比子查詢的方式要好,拿不出證據,老子弄死你們。

於是,需要借助SQL Server的性能優化指標,在SQL Server查詢語句之前,添加如下兩行語句即可,sql語句如下:

1 set statistics time on
2 set statistics io on

然后,打開結果標簽右側的消息標簽,這是內連接的消息:

這是子查詢的消息:

注意在子查詢中City表邏輯讀取了8次,而連接中只有1次。不要在意時間,因為數據量較小,所以子查詢的時候更快一些,等數據量上去,你就懂了。


免責聲明!

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



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