最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年10月13日 09:28:21   作者:城市里的最后一個(gè)農(nóng)民  
有些時(shí)候,子查詢可以被更有效的連接替代,方法僅供參考,需要的朋友可以了解下。

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

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

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

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

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

  如果使用連接(JOIN).. 來完成這個(gè)查詢工作,速度將會(huì)快很多。尤其是當(dāng)salesinfo表中對CustomerID建有索引的話,性能將會(huì)更好,查詢?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)建臨時(shí)表來完成這個(gè)邏輯上的需要兩個(gè)步驟的查詢工作

總結(jié)

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

相關(guān)文章

  • MySql 錯(cuò)誤Incorrect string value for column

    MySql 錯(cuò)誤Incorrect string value for column

    能使用中文進(jìn)行搜索,但是insert into 中文是可以的。我的數(shù)據(jù)庫和數(shù)據(jù)表中所有的charset都是設(shè)置的utf8。
    2010-12-12
  • MySQL OOM 系列一 Linux內(nèi)存分配

    MySQL OOM 系列一 Linux內(nèi)存分配

    今天想提到的是線上一個(gè)4G的RDS實(shí)例,發(fā)生了OOM(out of memory)的問題,MySQL進(jìn)程被直接Kill掉了。在解釋這個(gè)問題的時(shí)候,我們首先需要從Linux系統(tǒng)內(nèi)存分配策略講起
    2016-07-07
  • MySql COALESCE函數(shù)使用方法代碼案例

    MySql COALESCE函數(shù)使用方法代碼案例

    這篇文章主要介紹了MySql COALESCE函數(shù)使用方法代碼案例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • MySQL數(shù)據(jù)庫存儲(chǔ)引擎和分支現(xiàn)狀分析

    MySQL數(shù)據(jù)庫存儲(chǔ)引擎和分支現(xiàn)狀分析

    在MySQL經(jīng)歷了2008年Sun的收購和2009年Oracle收購Sun的過程中,基本處于停滯發(fā)展的情況,在可以預(yù)見的未來,MySQL是肯定會(huì)被Oracle擱置并且逐步雪藏消滅掉的。
    2011-03-03
  • MySQL數(shù)據(jù)庫中的嵌套查詢實(shí)例詳解

    MySQL數(shù)據(jù)庫中的嵌套查詢實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫中嵌套查詢的相關(guān)資料,嵌套查詢是SQL中的一種技術(shù),允許在一個(gè)查詢語句的某個(gè)部分嵌入另一個(gè)查詢,它主要用于處理復(fù)雜的邏輯,如多層條件過濾和數(shù)據(jù)對比,需要的朋友可以參考下
    2024-12-12
  • MySQL入門(五) MySQL中的索引詳講

    MySQL入門(五) MySQL中的索引詳講

    之前寫到MySQL對表的增刪改查(查詢最為重要)后,就感覺MySQL就差不多學(xué)完了,沒有想繼續(xù)學(xué)下去的心態(tài)了,原因可能是由于別人的影響,覺得對于MySQL來說,知道了一些復(fù)雜的查詢,就夠了
    2018-07-07
  • MySQL幾種更新操作的案例分析

    MySQL幾種更新操作的案例分析

    本文將通過一個(gè)用戶賬戶金額更新的案例分析幾種數(shù)據(jù)更新的操作的優(yōu)劣,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • mysql數(shù)據(jù)庫中字段的注釋和類型長度獲取方式

    mysql數(shù)據(jù)庫中字段的注釋和類型長度獲取方式

    這篇文章主要介紹了mysql數(shù)據(jù)庫中字段的注釋和類型長度獲取方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • mysql如何查詢兩個(gè)日期之間最大的連續(xù)登錄天數(shù)

    mysql如何查詢兩個(gè)日期之間最大的連續(xù)登錄天數(shù)

    在現(xiàn)在的很多網(wǎng)站中都有這樣一個(gè)功能。記錄用戶的連續(xù)登陸天數(shù),所謂的連續(xù)在線是指相鄰兩天都登錄過,不一定一直在線,但是只要有過登錄即可。這篇文章主要介紹的是利用sql語句如何查詢在兩個(gè)日期之間最大的連續(xù)登錄天數(shù),有需要的朋友們下面來一起看看吧。
    2016-10-10
  • mysql日期函數(shù)TO_DAYS()函數(shù)的詳細(xì)講解

    mysql日期函數(shù)TO_DAYS()函數(shù)的詳細(xì)講解

    在SQL中我們經(jīng)常需要根據(jù)時(shí)間字段查詢數(shù)據(jù),今天用到一個(gè)好用的時(shí)間字段,用來查詢一整天的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于mysql日期函數(shù)TO_DAYS()函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評論

平顺县| 遂平县| 抚宁县| 茶陵县| 虎林市| 阿尔山市| 宜兰市| 凤山市| 天全县| 宜兰市| 横山县| 司法| 烟台市| 怀远县| 东方市| 谢通门县| 河曲县| 大余县| 文水县| 资溪县| 金华市| 莱芜市| 乐山市| 塘沽区| 密云县| 乌兰浩特市| 汤阴县| 洛宁县| 梁河县| 阿瓦提县| 沾益县| 天祝| 平塘县| 漾濞| 大姚县| 景泰县| 安国市| 平罗县| 山阳县| 昌黎县| 廊坊市|