主頁 > 知識庫 > MySQL優(yōu)化之使用連接(join)代替子查詢

MySQL優(yōu)化之使用連接(join)代替子查詢

熱門標(biāo)簽:400電話申請什么好 百度地圖標(biāo)注地方備注 怎么辦理400電話呢 電銷機(jī)器人價格多少錢一臺 地圖標(biāo)注圖標(biāo)素材入駐 怎么申請400電話申請 電話機(jī)器人免費(fèi)嗎 好搜地圖標(biāo)注 龍圖酒吧地圖標(biāo)注

使用連接(JOIN)來代替子查詢(Sub-Queries)

MySQL從4.1開始支持SQL的子查詢。這個技術(shù)可以使用SELECT語句來創(chuàng)建一個單列的查詢結(jié)果,然后把這個結(jié)果作為過濾條件用在另一個查詢中。例如,我們要將客戶基本信息表中沒有任何訂單的客戶刪除掉,就可以利用子查詢先從銷售信息表中將所有發(fā)出訂單的客戶ID取出來,然后將結(jié)果傳遞給主查詢,如下所示:

DELETE FROM customerinfo 
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo ) 

  使用子查詢可以一次性的完成很多邏輯上需要多個步驟才能完成的SQL操作,同時也可以避免事務(wù)或者表鎖死,并且寫起來也很容易。但是,有些情況下,子查詢可以被更有效率的連接(JOIN).. 替代。例如,假設(shè)我們要將所有沒有訂單記錄的用戶取出來,可以用下面這個查詢完成:

SELECT * FROM customerinfo 
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo ) 

  如果使用連接(JOIN).. 來完成這個查詢工作,速度將會快很多。尤其是當(dāng)salesinfo表中對CustomerID建有索引的話,性能將會更好,查詢?nèi)缦拢?

SELECT * FROM customerinfo 
LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo. 
CustomerID 
WHERE salesinfo.CustomerID IS NULL 

  連接(JOIN).. 之所以更有效率一些,是因?yàn)?MySQL不需要在內(nèi)存中創(chuàng)建臨時表來完成這個邏輯上的需要兩個步驟的查詢工作

總結(jié)

本文關(guān)于MySQL優(yōu)化之使用連接(join)代替子查詢的內(nèi)容就到這里,僅供參考。如有不足之處請指出。歡迎大家交流討論。感謝朋友們對本站的支持。

您可能感興趣的文章:
  • MySQL里面的子查詢實(shí)例
  • 解決MySQL中IN子查詢會導(dǎo)致無法使用索引問題
  • 詳細(xì)講述MySQL中的子查詢操作
  • 詳解MySQL子查詢(嵌套查詢)、聯(lián)結(jié)表、組合查詢
  • mysql in語句子查詢效率慢的優(yōu)化技巧示例
  • Mysql子查詢IN中使用LIMIT應(yīng)用示例
  • MYSQL子查詢和嵌套查詢優(yōu)化實(shí)例解析
  • mysql實(shí)現(xiàn)多表關(guān)聯(lián)統(tǒng)計(jì)(子查詢統(tǒng)計(jì))示例
  • MySQL筆記之子查詢使用介紹
  • MySQL子查詢中order by不生效問題的解決方法

標(biāo)簽:撫順 浙江 內(nèi)江 防疫工作 固原 廣西 溫州 汕尾

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL優(yōu)化之使用連接(join)代替子查詢》,本文關(guān)鍵詞  MySQL,優(yōu)化,之,使用,連接,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL優(yōu)化之使用連接(join)代替子查詢》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL優(yōu)化之使用連接(join)代替子查詢的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章