亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL中in與exists的使用及區(qū)別介紹

2024-07-25 19:09:24
字體:
供稿:網(wǎng)友
這篇文章主要介紹了MySQL中in與exists的使用及區(qū)別介紹,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
 

先放一段代碼

for(int i=0;i<1000;i++){ for(int j=0;j<5;j++){ System.out.println("hello"); }} for(int i=0;i<5;i++){ for(int j=0;j<1000;j++){ System.out.println("hello"); }}

分析以上代碼可以看到兩行代碼除了循環(huán)的次序不一致意外,其他并無區(qū)別,在實際執(zhí)行時兩者所消耗的時間和空間應(yīng)該也是一致的。但是這僅僅是在Java中,現(xiàn)在我們轉(zhuǎn)化一下情景,最外層循環(huán)是數(shù)據(jù)庫中的連接操作,內(nèi)層循環(huán)為查找操作,那么現(xiàn)在兩次的結(jié)果將相差巨大。

之所以出現(xiàn)這樣的原因是數(shù)據(jù)庫的特點決定的,數(shù)據(jù)庫中相比較于查詢操作而言,建立連接是更消耗資源的。第一段代碼建立了1000次連接,每一次連接卻只做了5次查詢,顯然是很浪費的。

因此在我們對數(shù)據(jù)庫進行操作時需要遵循的操作應(yīng)當是小表驅(qū)動大表(小的數(shù)據(jù)集驅(qū)動大的數(shù)據(jù)集)。

in與exists

表結(jié)構(gòu)

tbl_emp為員工表,deptld為部門id。tbl_dept為部門表。員工表中含有客人,其deptld字段為-1

mysql> desc tbl_emp;+--------+-------------+------+-----+---------+----------------+| Field | Type  | Null | Key | Default | Extra   |+--------+-------------+------+-----+---------+----------------+| id  | int(11)  | NO | PRI | NULL | auto_increment || name | varchar(20) | YES |  | NULL |    || deptld | int(11)  | YES | MUL | NULL |    |+--------+-------------+------+-----+---------+----------------+3 rows in set (0.00 sec)mysql> desc tbl_dept;+----------+-------------+------+-----+---------+----------------+| Field | Type  | Null | Key | Default | Extra   |+----------+-------------+------+-----+---------+----------------+| id  | int(11)  | NO | PRI | NULL | auto_increment || deptName | varchar(30) | YES | MUL | NULL |    || locAdd | varchar(40) | YES |  | NULL |    |+----------+-------------+------+-----+---------+----------------+3 rows in set (0.01 sec)

我們知道對于一個公司而言相對于部門來說員工數(shù)要多得多?,F(xiàn)在我們有這樣一個需求:查詢屬于這個公司的員工(不含來訪客人),我們可以用以下代碼解決

利用in

# 先查詢部門表中所有的id,然后拿員工表中的deptld字段與之對比,若含有則保留。

mysql> select * from tbl_emp a where a.deptld in (select id from tbl_dept);

in關(guān)鍵字就像or的拼接,例如上述sql雨中子查詢查出的結(jié)果為1,2,3。則sql語句等價于以下形式

mysql> select * from tbl_emp a where a.deptld=1 or a.deptld=2 or a.deptld=3

總的來說in關(guān)鍵字就是將子查詢中的所有結(jié)果都查出來,假設(shè)結(jié)果集為B,共有m條記錄,然后在將子查詢條件的結(jié)果集分解成m個,再進行m次查詢??梢钥吹竭@里主要是用到了A的索引,B表如何對查詢影響不大

利用exists

mysql> select * from tbl_emp a where exists (select 1 from tbl_dept b where a.deptld = b.id );

exits:將主查詢的數(shù)據(jù)放到子查詢中做條件驗證,根據(jù)驗證結(jié)果(True或False)來判斷是否保留主查詢中的記錄。

for (i = 0; i < count(A); i++) { //遍歷A的總記錄數(shù)  a = get_record(A, i); //從A表逐條獲取記錄  if (B.id = a[id]) //如果子條件成立    result[] = a;}return result;

可以看到:exists主要是用到了B表的索引,A表如何對查詢的效率影響不大

結(jié)論

mysql> select * from tbl_emp a where a.deptld in (select id from tbl_dept);

若tbl_dept的記錄數(shù)少余tbl_emp則使用in效率比較高

mysql> select * from tbl_emp a where exists (select 1 from tbl_dept b where a.deptld = b.id );

若tbl_dept的記錄數(shù)多余tbl_emp則使用in效率比較高

下面給大家介紹IN與EXISTS的區(qū)別

1、IN查詢分析

SELECT * FROM A WHERE id IN (SELECT id FROM B);

等價于:1、SELECT id FROM B ----->先執(zhí)行in中的查詢

              2、SELECT *  FROM A  WHERE A.id = B.id

以上in()中的查詢只執(zhí)行一次,它查詢出B中的所有的id并緩存起來,然后檢查A表中查詢出的id在緩存中是否存在,如果存在則將A的查詢數(shù)據(jù)加入到結(jié)果集中,直到遍歷完A表中所有的結(jié)果集為止。

以下用遍歷結(jié)果集的方式來分析IN查詢

MySQL,in,exists,區(qū)別

通過以上程序可以看出,當B表的數(shù)據(jù)較大時不適合使用in()查詢,因為它會將B表中的數(shù)據(jù)全部遍歷一次

例如:

1、A表中有100條記錄,B表中有1000條記錄,那么最多可能遍歷100*1000次,效率很差

2、A表中有1000條記錄,B表中有100條記錄,那么最多可遍歷1000*100此,內(nèi)循環(huán)次數(shù)減少,效率大大提升

結(jié)論:IN()查詢適合B表數(shù)據(jù)比A表數(shù)據(jù)小的情況,IN()查詢是從緩存中取數(shù)據(jù)

2、EXISTS查詢分析

語法:SELECT  字段 FROM  table WHERE EXISTS(subquery);

SELECT * FROM a WHERE EXISTS(SELECT 1 FROM b WHERE B.id = A.id);

以上查詢等價于:

SELECT * FROM A;SELECT I FROM B WHERE B.id = A.id;

EXISTS()查詢會執(zhí)行SELECT * FROM A查詢,執(zhí)行A.length次,并不會將EXISTS()查詢結(jié)果結(jié)果進行緩存,因為EXISTS()查詢返回一個布爾值true或flase,它只在乎EXISTS()的查詢中是否有記錄,與具體的結(jié)果集無關(guān)。

EXISTS()查詢是將主查詢的結(jié)果集放到子查詢中做驗證,根據(jù)驗證結(jié)果是true或false來決定主查詢數(shù)據(jù)結(jié)果是否得以保存。

總結(jié)

以上所述是小編給大家介紹的MySQL中in與exists的使用及區(qū)別介紹,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!

 


注:相關(guān)教程知識閱讀請移步到MYSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
狠狠色丁香久久婷婷综合_中| 国产精品女主播av| 欧美精品乱码久久久久久按摩| 2019国产精品视频| 亚洲第一精品影视| 久久久久久久久久久久久久久国产| 亚洲欧美一区二区三区情侣bbw| 国产一区福利| 99精品国产高清一区二区| www插插插无码免费视频网站| 日韩精品一区二区视频| 欧美色图在线播放| 色多多在线观看| 情事1991在线| 日本jizzcom| 欧美成人高清电影在线| 日本三级很黄试看120秒| 久久久久久久久久久综合| 亚洲午夜色婷婷在线| 成av人片在线观看www| 国产人成在线视频| 国产尤物视频| 精品国产一区二区三区不卡在线| 日产日韩在线亚洲欧美| 99re66热这里只有精品3直播| 亚洲精品成人在线| 美女久久久久久久| 懂色av蜜臀av粉嫩av分享吧| 90岁老太婆乱淫| 精品久久毛片| 日本在线中文字幕一区| 久久久久久久久久影视| 国产一区二区三区久久精品| 国产日韩在线亚洲字幕中文| 婷婷综合亚洲| 激情小说亚洲一区| 亚洲激情久久| 亚洲黄色a级片| 暧暧视频在线免费观看| 欧美丰满熟妇bbb久久久| 欧美中文字幕在线观看| 亚洲免费成人av在线| 亚洲一区在线观看免费| 亚洲电影一区二区三区| 最近中文字幕mv免费高清视频8| 日韩欧美一级二级| 久久免费视频3| 国产专区视频| 日本a在线免费观看| 写真福利片hd在线播放| 欧洲美一区二区三区亚洲| 天美av一区二区三区久久| 二区在线播放| 樱桃成人精品视频在线播放| 777奇米888色狠狠俺也去| 天天干在线观看| 免费黄色特级片| 人妻无码一区二区三区免费| 国产成人精品一区二三区四区五区| 欧美美女在线直播| 国产精品尤物福利片在线观看| 日韩在线观看网址| 性生生活大片免费看视频| 国产三级在线播放| 精品人妻少妇嫩草av无码| 在线观看黄网站| 国产精品视频公开费视频| 韩国国内大量揄拍精品视频| 国产欧美一区二区三区鸳鸯浴| 国产亚洲欧美一区| 一区二区日韩| а√天堂在线官网| 亚洲国产欧美日韩另类综合| 成年免费插网| 精品国产乱码一区二区| 五月婷婷亚洲综合| 女生裸体无遮挡天堂网站免费| 麻豆乱码国产一区二区三区| 国产精品美女www爽爽爽视频| 丰满熟妇人妻中文字幕| 国产精品久久久久久久免费大片| 99视频精品| 羞羞色午夜精品一区二区三区| 国产精品美女| 精品一区二区三区久久| 亚洲av综合色区无码另类小说| 国产精品久久久久久户外露出| 国产美女在线观看一区| 91尤物视频在线观看| 女同一区二区免费aⅴ| 欧美成人午夜激情在线| 国产在线视频精品一区| 天天看片中文字幕| 亚洲精品www久久久| 亚洲精品毛片一区二区三区| 欧美性猛交xxxx乱大交丰满| 欧美福利视频在线| 自拍偷拍欧美视频| 国产又大又硬又粗| 成年人网站在线免费观看| 热久久最新地址| 午夜在线激情影院| 精品91一区二区三区| 久久精品不卡| 男女羞羞视频在线观看| 欧美xxxbbb| 国产专区精品视频| 欧美aaa视频| 日本视频在线观看一区二区三区| 亚洲黄色视屏| 国产午夜精品视频一区二区三区| 亚欧洲乱码视频| 狠狠综合久久av一区二区蜜桃| 国产精品亚洲专一区二区三区| 亚洲在线一区二区| 免费网站观看电影入口| 免费日韩一区二区| 国产亚洲成精品久久| 李丽珍裸体午夜理伦片| 成人拍拍拍在线观看| 欧美色偷偷大香| 好想男人揉我下面好多水| 最新在线黄色网址| 亚洲精品国产首次亮相| 国产精品日韩精品欧美精品| 色综合 综合色| 国产一二三四视频| av网站在线观看不卡| 捷克做爰xxxⅹ性视频| 91成人福利在线观看| 夜夜嗨网站十八久久| 亚洲第一天堂无码专区| 农民人伦一区二区三区| 一区二区在线免费观看视频| 欧美二区乱c黑人| 欧美久久久久中文字幕| 日本韩国欧美超级黄在线观看| 国产日韩精品推荐| 九色视频网站在线观看| 国产欧美一区二区三区在线看蜜臂| 欧美三区免费完整视频在线观看| 羞羞小视频在线观看| 国产精品久久久久久福利| 日韩一区二区中文字幕| 精品在线观看入口| 久久婷婷人人澡人人喊人人爽| 刘亦菲久久免费一区二区| 久久国产精品99久久久久久老狼| 婷婷四房综合激情五月| 97在线视频一区| aa一级黄色片| 日韩性感在线| 中文字幕一区二区三区四区免费看| 欧美日韩一区二区视频在线| 亚洲另类第一页| 日本亚洲一区二区三区| 午夜国产欧美理论在线播放| 午夜一级久久| 久久精品72免费观看| av一级在线观看| 欧美日韩另类国产亚洲欧美一级| 久久久国产一区二区三区四区小说| 精品自拍视频在线观看| 欧美一区二区国产| 污污在线观看| 欧美日本高清视频| 在线免费av电影| 国产精品成人一区二区艾草| 91沈先生在线观看| 国产精品嫩草影院av蜜臀| 国产91在线播放九色| 欧美激情20| 免费福利视频网站| 男女无套免费网站| yellow中文字幕久久| 精品国产国产综合精品| 中文亚洲视频在线| 美女黄色片视频| 成人短视频软件网站大全app| 久久久噜噜噜久噜久久综合| 国产98在线| 另类一区二区三区| 国产suv精品一区| 亚洲国产精品一区二区www在线| 啊v视频在线一区二区三区| 日韩资源av在线| 男人天堂成人在线| 国产成人精品免费| 哺乳挤奶一区二区三区免费看| 久久精品免费电影| 精品视频在线观看免费观看| 好男人看片在线观看免费观看国语| 尤物视频在线观看网站| 国内精品视频一区二区三区八戒| 国产免费播放一区二区| 97国产精品久久| 国产综合中文字幕| 人人爽人人爽人人片| 精品国产无码AV| 国产成人免费av在线| 精品捆绑调教一区二区三区| 欧美成人一区二区三区高清| 久久久久美女| 成人做爰高清视频网站| 伊人伊人av电影| 久久久久久久久岛国免费| 韩国中文字幕av| 精品91一区二区三区| 亚洲影院一区| 久久精品免费播放| 日本免费在线观看视频| 91久久大香伊蕉在人线| www.欧美.com| 快色在线观看| 色噜噜狠狠永久免费| 在线观看日本一区二区| www.免费黄色| 日本a一级在线免费播放| 欧美性受xxx黑人xyx性爽| 91黑丝高跟在线| 成人在线免费在线观看| 午夜视频在线观看一区二区| 久久蜜桃av一区精品变态类天堂| 中文字幕亚洲综合久久五月天色无吗''| 亚洲精品国产精品国产| 肉体视频在线| 女人床在线观看| 色天使色偷偷av一区二区| 亚洲国产精品网站| 久久影视精品| 永久免费无码av网站在线观看| 中文字幕欧美专区| eeuss鲁丝片eeuss影院| www.四虎精品| 四虎影视2018在线播放alocalhost| 亚洲香蕉成视频在线观看| 女王人厕视频2ⅴk| 日韩av无码一区二区三区不卡| 国产精品一二三在线观看| 欧美舌奴丨vk视频| 欧美制服丝袜第一页| 亚洲精品国产久| 国产精品高精视频免费| 大伊香蕉精品在线品播放| 亚洲大胆人体大胆做受1| 欧美日韩一二三四五区| 亚洲黄色片在线观看| av首页在线观看| 蜜桃视频免费观看一区| 牛牛电影国产一区二区| 久久福利资源站| 亚洲区小说区| 欧美另类精品xxxx孕妇| 亚洲精品久久久久久久久| 一区二区影视| 欧产日产国产69| 亚洲成人99| 91在线免费网站| 精品亚洲一区二区三区四区| 欧美最新精品| 在线观看中文字幕码| av成人观看| 曰本一区二区三区视频| 亚洲精品一品区二品区三品区| 亚洲一区自拍偷拍| 国产真实的和子乱拍在线观看| 日韩一区国产在线观看| 久久精视频免费在线久久完整在线看| 国内精品偷拍| 亚洲国产日韩欧美在线99| 日韩在线观看中文字幕| 水蜜桃免费高清视频在线播放| 中文字幕欧美国产| 日韩在线无毛| 日本www高清视频| 99久久免费视频.com| 亚洲综合成人av| 特级西西人体wwwww| 精品国产亚洲AV| 欧美亚洲国产怡红院影院| 免费观看久久av| 调教在线观看| 亚洲久久一区二区| 国产精品久久激情| 青青草福利视频| 亚洲大胆人体视频| 91成人国产在线观看| 国产欧美日韩激情| 精品一区免费观看| 精品二区三区线观看| 亚洲图片欧美另类| 欧美日韩视频精品一区二区| 亚洲欧美日韩在线播放| 成人视屏免费看| 黄网站app在线观看大全免费视频| 亚洲第一se情网站| 亚洲va久久久噜噜噜无码久久| 另类图片综合电影| 欧美精品a∨在线观看不卡| 在线观看免费视频一区二区三区| 欧美草草影院在线视频| 亚洲第一成肉网| 鲁片一区二区三区| 国产大片在线免费观看| 偷偷操不一样的久久| 国产精品爽黄69天堂a| 国产视频网站在线观看| 女人丝袜激情亚洲| 神马久久一区二区三区| 免费日本视频一区| 成人午夜免费电影| 国产一区二区麻豆| 日韩二区三区| 国产精品热久久久久夜色精品三区| 播金莲一级淫片aaaaaaa| 亚洲精品成人影院| 91成人福利视频| 黄色特一级视频| 超碰97在线资源站| 少妇熟女一区二区| 色香蕉久久蜜桃| 黄色av网站免费观看| 欧美伊人精品成人久久综合97| 日韩欧美一区二区视频在线播放| 国产大学生视频| 色一情一区二区三区| 亚洲色图另类色图| 国产精品久久久久久久久粉嫩av|