国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mySQL中in查詢與exists查詢的區別小結

2024-07-24 13:11:20
字體:
來源:轉載
供稿:網友

一、關于exists查詢

explain select * from vendor where EXISTS(select * from area where area_code = vendor_prov_code ) limit 10

以上是一個典型的exists查詢的sql語句。

它的作用方式是這樣的:每次從vendor表中查詢出一條數據,然后將這條數據中的vendor_prov_code值傳遞到exists查詢中進行執行,也就是進行子查詢的執行。

如果子查詢查到的數據就返回布爾值true,如果沒有就返回布爾值false。返回布爾值true則將該條數據保存下來,否則就舍棄掉。也就是說exists查詢,是查詢出一條數據就執行一次子查詢。

需要注意的是:exists …. 只能返回布爾值true或者false,其他的字段并不會進行返回的。

二、關于in查詢

explain select * from vendor where vendor_prov_code in (select area_code from area ) limit 10

上面就是一條關于in查詢的sql語句。

它的作用方式是這樣的:先執行子查詢,也就是in()所包含的語句。子查詢查詢出數據以后,將前面的查詢分為n次普通查詢(n表示在子查詢中返回的數據行數)。也就是例如以下的執行步驟:

select * from doub_vendor where vendor_prov_code = 子查詢結果1..............select * from doub_vendor where vendor_prov_code = 子查詢結果n

網上有人在爭exists查詢與in查詢的效率問題,這里得說以下,不同的mysql版本,不同的業務,不同的數據,執行效率是不一定的,這里涉及到了mysql優化器對sql語句的優化,子查詢的數據量問題等等。

網上還有人說mysql5.6版本對in查詢做了很好的優化,所以效率問題要看具體的場景,要看真實測試的數據來進行優化!

總結

以上就是Mysql中in查詢與exists查詢區別的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 改则县| 巴南区| 黄骅市| 三都| 当涂县| 舞阳县| 鹰潭市| 修水县| 徐汇区| 云林县| 平原县| 永胜县| 乌拉特中旗| 合水县| 潞城市| 定南县| 海阳市| 镇雄县| 汉源县| 宁国市| 临江市| 怀来县| 伊宁市| 宜君县| 襄城县| 靖边县| 宜都市| 饶阳县| 故城县| 濉溪县| 溧水县| 乐山市| 孟村| 正蓝旗| 大兴区| 承德县| 临武县| 手游| 红安县| 华亭县| 汉寿县|