《MYSQL教程mySQL中in查詢與exists查詢的區(qū)別小結(jié)》要點(diǎn):
本文介紹了MYSQL教程mySQL中in查詢與exists查詢的區(qū)別小結(jié),希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
一、關(guān)于exists查詢MYSQL學(xué)習(xí)
explain select * from vendor where EXISTS(select * from area where area_code = vendor_prov_code ) limit 10
以上是一個(gè)典型的exists查詢的sql語句.MYSQL學(xué)習(xí)
它的作用方式是這樣的:每次從vendor表中查詢出一條數(shù)據(jù),然后將這條數(shù)據(jù)中的vendor_prov_code
值傳遞到exists查詢中進(jìn)行執(zhí)行,也就是進(jìn)行子查詢的執(zhí)行.MYSQL學(xué)習(xí)
如果子查詢查到的數(shù)據(jù)就返回布爾值true,如果沒有就返回布爾值false.返回布爾值true則將該條數(shù)據(jù)保存下來,否則就舍棄掉.也就是說exists查詢,是查詢出一條數(shù)據(jù)就執(zhí)行一次子查詢.MYSQL學(xué)習(xí)
需要注意的是:exists …. 只能返回布爾值true或者false,其他的字段并不會(huì)進(jìn)行返回的.MYSQL學(xué)習(xí)
二、關(guān)于in查詢MYSQL學(xué)習(xí)
explain select * from vendor where vendor_prov_code in (select area_code from area ) limit 10
上面就是一條關(guān)于in查詢的sql語句.MYSQL學(xué)習(xí)
它的作用方式是這樣的:先執(zhí)行子查詢,也就是in()
所包含的語句.子查詢查詢出數(shù)據(jù)以后,將前面的查詢分為n次普通查詢(n表示在子查詢中返回的數(shù)據(jù)行數(shù)).也就是例如以下的執(zhí)行步驟:MYSQL學(xué)習(xí)
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查詢的效率問題,這里得說以下,不同的mysql版本,不同的業(yè)務(wù),不同的數(shù)據(jù),執(zhí)行效率是不一定的,這里涉及到了mysql優(yōu)化器對(duì)sql語句的優(yōu)化,子查詢的數(shù)據(jù)量問題等等.MYSQL學(xué)習(xí)
網(wǎng)上還有人說mysql5.6版本對(duì)in查詢做了很好的優(yōu)化,所以效率問題要看具體的場(chǎng)景,要看真實(shí)測(cè)試的數(shù)據(jù)來進(jìn)行優(yōu)化!MYSQL學(xué)習(xí)
總結(jié)MYSQL學(xué)習(xí)
以上就是Mysql中in查詢與exists查詢區(qū)別的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的贊助,如果有疑問大家可以留言交流.
MYSQL學(xué)習(xí)
維易PHP培訓(xùn)學(xué)院每天發(fā)布《MYSQL教程mySQL中in查詢與exists查詢的區(qū)別小結(jié)》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/9864.html