《MYSQL教程mySQL中in查詢與exists查詢的區別小結》要點:
本文介紹了MYSQL教程mySQL中in查詢與exists查詢的區別小結,希望對您有用。如果有疑問,可以聯系我們。
一、關于exists查詢MYSQL學習
explain select * from vendor where EXISTS(select * from area where area_code = vendor_prov_code ) limit 10
以上是一個典型的exists查詢的sql語句.MYSQL學習
它的作用方式是這樣的:每次從vendor表中查詢出一條數據,然后將這條數據中的vendor_prov_code
值傳遞到exists查詢中進行執行,也就是進行子查詢的執行.MYSQL學習
如果子查詢查到的數據就返回布爾值true,如果沒有就返回布爾值false.返回布爾值true則將該條數據保存下來,否則就舍棄掉.也就是說exists查詢,是查詢出一條數據就執行一次子查詢.MYSQL學習
需要注意的是:exists …. 只能返回布爾值true或者false,其他的字段并不會進行返回的.MYSQL學習
二、關于in查詢MYSQL學習
explain select * from vendor where vendor_prov_code in (select area_code from area ) limit 10
上面就是一條關于in查詢的sql語句.MYSQL學習
它的作用方式是這樣的:先執行子查詢,也就是in()
所包含的語句.子查詢查詢出數據以后,將前面的查詢分為n次普通查詢(n表示在子查詢中返回的數據行數).也就是例如以下的執行步驟:MYSQL學習
select * from doub_vendor where vendor_prov_code = 子查詢結果1 ....... ....... select * from doub_vendor where vendor_prov_code = 子查詢結果n
網上有人在爭exists查詢與in查詢的效率問題,這里得說以下,不同的mysql版本,不同的業務,不同的數據,執行效率是不一定的,這里涉及到了mysql優化器對sql語句的優化,子查詢的數據量問題等等.MYSQL學習
網上還有人說mysql5.6版本對in查詢做了很好的優化,所以效率問題要看具體的場景,要看真實測試的數據來進行優化!MYSQL學習
總結MYSQL學習
以上就是Mysql中in查詢與exists查詢區別的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的贊助,如果有疑問大家可以留言交流.
MYSQL學習
維易PHP培訓學院每天發布《MYSQL教程mySQL中in查詢與exists查詢的區別小結》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。