mySQL中in查詢與exists查詢的區(qū)別小結(jié)
一、關(guān)于exists查詢
explain select * from vendor where EXISTS(select * from area where area_code = vendor_prov_code ) limit 10
以上是一個(gè)典型的exists查詢的sql語(yǔ)句。
它的作用方式是這樣的:每次從vendor表中查詢出一條數(shù)據(jù),然后將這條數(shù)據(jù)中的vendor_prov_code
值傳遞到exists查詢中進(jìn)行執(zhí)行,也就是進(jìn)行子查詢的執(zhí)行。
如果子查詢查到的數(shù)據(jù)就返回布爾值true,如果沒(méi)有就返回布爾值false。返回布爾值true則將該條數(shù)據(jù)保存下來(lái),否則就舍棄掉。也就是說(shuō)exists查詢,是查詢出一條數(shù)據(jù)就執(zhí)行一次子查詢。
需要注意的是:exists …. 只能返回布爾值true或者false,其他的字段并不會(huì)進(jìn)行返回的。
二、關(guān)于in查詢
explain select * from vendor where vendor_prov_code in (select area_code from area ) limit 10
上面就是一條關(guān)于in查詢的sql語(yǔ)句。
它的作用方式是這樣的:先執(zhí)行子查詢,也就是in()
所包含的語(yǔ)句。子查詢查詢出數(shù)據(jù)以后,將前面的查詢分為n次普通查詢(n表示在子查詢中返回的數(shù)據(jù)行數(shù))。也就是例如以下的執(zhí)行步驟:
select * from doub_vendor where vendor_prov_code = 子查詢結(jié)果1 ....... ....... select * from doub_vendor where vendor_prov_code = 子查詢結(jié)果n
網(wǎng)上有人在爭(zhēng)exists查詢與in查詢的效率問(wèn)題,這里得說(shuō)以下,不同的mysql版本,不同的業(yè)務(wù),不同的數(shù)據(jù),執(zhí)行效率是不一定的,這里涉及到了mysql優(yōu)化器對(duì)sql語(yǔ)句的優(yōu)化,子查詢的數(shù)據(jù)量問(wèn)題等等。
網(wǎng)上還有人說(shuō)mysql5.6版本對(duì)in查詢做了很好的優(yōu)化,所以效率問(wèn)題要看具體的場(chǎng)景,要看真實(shí)測(cè)試的數(shù)據(jù)來(lái)進(jìn)行優(yōu)化!
總結(jié)
以上就是Mysql中in查詢與exists查詢區(qū)別的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
MySql 如何實(shí)現(xiàn)無(wú)則插入有則更新
這篇文章主要介紹了MySql 實(shí)現(xiàn)無(wú)則插入有則更新的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06mysql 查詢數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程與函數(shù)的語(yǔ)句
mysql 查詢數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程與函數(shù)的語(yǔ)句,需要的朋友可以參考下。2011-05-05mysql正確安全清空在線慢查詢?nèi)罩緎low log的流程分享
這篇文章主要介紹了正確安全清空在線慢查詢?nèi)罩緎low log的流程,需要的朋友可以參考下2014-02-02MySQL表字段設(shè)置默認(rèn)值(圖文教程及注意細(xì)節(jié))
默認(rèn)值的設(shè)置很重要,比如在插入的時(shí)候一些字段是可以省略的,這會(huì)帶來(lái)很多的方便,接下來(lái)將要介紹MySQL表字段設(shè)置默認(rèn)值感興趣的你可以千萬(wàn)不要走開(kāi)啊,希望本文對(duì)你有所幫助2013-01-01MySQL數(shù)據(jù)備份、還原、數(shù)據(jù)庫(kù)遷移以及表的導(dǎo)出和導(dǎo)入
作為流行的開(kāi)源數(shù)據(jù)庫(kù)管理系統(tǒng),MySQL的使用者眾多,為了維護(hù)數(shù)據(jù)安全性,數(shù)據(jù)備份是必不可少的,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)備份、還原、數(shù)據(jù)庫(kù)遷移以及表的導(dǎo)出和導(dǎo)入的相關(guān)資料,需要的朋友可以參考下2022-11-11MySql 5.7.20安裝及data和my.ini文件的配置
本文通過(guò)圖文并茂的形式給大家介紹了MySql 5.7.20安裝及data和my.ini文件的配置方法,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2017-11-11MySQL入門(二) 數(shù)據(jù)庫(kù)數(shù)據(jù)類型詳解
這個(gè)數(shù)據(jù)庫(kù)所遇到的數(shù)據(jù)類型今天統(tǒng)統(tǒng)在這里講清楚了,以后在看到什么數(shù)據(jù)類型,咱度應(yīng)該認(rèn)識(shí),對(duì)我來(lái)說(shuō),最不熟悉的應(yīng)該就是時(shí)間類型這塊了。但是通過(guò)今天的學(xué)習(xí),已經(jīng)解惑了。下面就跟著我的節(jié)奏去把這個(gè)拿下吧2018-07-07MySQL中的數(shù)據(jù)加密解密安全技術(shù)教程
在數(shù)據(jù)庫(kù)應(yīng)用程序中,數(shù)據(jù)的安全性是至關(guān)重要的,MySQL作為一種常用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),也提供了一些數(shù)據(jù)加密和解密的技巧來(lái)保護(hù)敏感數(shù)據(jù)的安全性,為了保護(hù)敏感數(shù)據(jù)免受未經(jīng)授權(quán)的訪問(wèn),我們可以使用加密和解密技術(shù)2024-01-01