婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > MySQL中in與exists的使用及區(qū)別介紹

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

熱門(mén)標(biāo)簽:寶應(yīng)電信400電話(huà)辦理費(fèi)用 400電話(huà)辦理都選易號(hào)網(wǎng) 高德地圖標(biāo)注模式 如何在高德地圖標(biāo)注新地址 高德地圖標(biāo)注中心個(gè)人注冊(cè) 電銷(xiāo)機(jī)器人針對(duì)的 外呼系統(tǒng)服務(wù) 外呼系統(tǒng)防封號(hào)違法嗎 湘潭電銷(xiāo)機(jī)器人咨詢(xún)電話(huà)

先放一段代碼

for(int i=0;i1000;i++){
 for(int j=0;j5;j++){
 System.out.println("hello");
 }
}

 for(int i=0;i5;i++){
 for(int j=0;j1000;j++){
 System.out.println("hello");
 }
}

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

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

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

in與exists

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

tbl_emp為員工表,deptld為部門(mén)id。tbl_dept為部門(mén)表。員工表中含有客人,其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)

我們知道對(duì)于一個(gè)公司而言相對(duì)于部門(mén)來(lái)說(shuō)員工數(shù)要多得多。現(xiàn)在我們有這樣一個(gè)需求:查詢(xún)屬于這個(gè)公司的員工(不含來(lái)訪客人),我們可以用以下代碼解決

利用in

# 先查詢(xún)部門(mén)表中所有的id,然后拿員工表中的deptld字段與之對(duì)比,若含有則保留。

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

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

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

總的來(lái)說(shuō)in關(guān)鍵字就是將子查詢(xún)中的所有結(jié)果都查出來(lái),假設(shè)結(jié)果集為B,共有m條記錄,然后在將子查詢(xún)條件的結(jié)果集分解成m個(gè),再進(jìn)行m次查詢(xún)。可以看到這里主要是用到了A的索引,B表如何對(duì)查詢(xún)影響不大

利用exists

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

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

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表如何對(duì)查詢(xún)的效率影響不大

結(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查詢(xún)分析

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

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

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

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

以下用遍歷結(jié)果集的方式來(lái)分析IN查詢(xún)

通過(guò)以上程序可以看出,當(dāng)B表的數(shù)據(jù)較大時(shí)不適合使用in()查詢(xún),因?yàn)樗鼤?huì)將B表中的數(shù)據(jù)全部遍歷一次

例如:

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

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

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

2、EXISTS查詢(xún)分析

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

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

以上查詢(xún)等價(jià)于:

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

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

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

總結(jié)

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

您可能感興趣的文章:
  • mysql中EXISTS和IN的使用方法比較
  • MySQL中exists、in及any的基本用法
  • 對(duì)比分析MySQL語(yǔ)句中的IN 和Exists
  • MySQL exists 和in 詳解及區(qū)別
  • mySQL中in查詢(xún)與exists查詢(xún)的區(qū)別小結(jié)
  • MYSQL IN 與 EXISTS 的優(yōu)化示例介紹
  • mysql not in、left join、IS NULL、NOT EXISTS 效率問(wèn)題記錄
  • MySQL中in和exists區(qū)別詳解

標(biāo)簽:黔南 馬鞍山 宿遷 蘭州 南充 佛山 黃山 賀州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL中in與exists的使用及區(qū)別介紹》,本文關(guān)鍵詞  MySQL,中,與,exists,的,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL中in與exists的使用及區(qū)別介紹》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于MySQL中in與exists的使用及區(qū)別介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久99精品久久久久久国产越南| 久久精品久久久精品美女| 成人综合在线视频| 麻豆成人久久精品二区三区红 | 久久久美女艺术照精彩视频福利播放| 国产成人午夜视频| 在线国产亚洲欧美| 日韩电影一区二区三区四区| 麻豆成人综合网| 一区二区三区.www| 日韩av电影一区| 国产成人综合在线| 久久国产剧场电影| 亚洲国产日韩a在线播放性色| 日本美女一区二区| 在线不卡一区二区| 91黄色激情网站| 欧洲生活片亚洲生活在线观看| 日韩理论电影院| 久久蜜臀中文字幕| 51精品国自产在线| 国产亚洲成年网址在线观看| 亚洲精品久久嫩草网站秘色| 91视频.com| 老司机免费视频一区二区三区| 中国av一区二区三区| 一区二区三区毛片| 久久久久久久久一| 夜夜嗨av一区二区三区四季av| 亚洲成人av一区二区| 麻豆91在线播放| 色综合久久久久综合体桃花网| 欧美高清精品3d| 欧美国产视频在线| 亚洲电影激情视频网站| 国产精品国产精品国产专区不蜜| 久久精品人人做人人综合| 欧美精品一区二区三区久久久| 欧美精品一区二区在线观看| 国产精品短视频| 日本午夜精品视频在线观看| 97久久精品人人做人人爽50路| 国产精品一区二区你懂的| 欧美三级视频在线播放| 国产精品久久久久久福利一牛影视| 秋霞成人午夜伦在线观看| 日韩电影在线免费| 国产一区二区三区黄视频 | 天天综合色天天| 久久久久久久久久美女| 精品电影一区二区| 色婷婷国产精品| 日韩欧美一区二区在线视频| 日韩精品91亚洲二区在线观看 | 国产电影精品久久禁18| 亚洲国产欧美日韩另类综合| 蜜臀av一区二区| 91久久免费观看| 日韩视频在线一区二区| 日韩电影在线一区二区三区| 亚洲成人三级小说| 亚洲高清免费在线| 精品在线你懂的| 国产欧美一区二区三区沐欲| 国产福利视频一区二区三区| 538prom精品视频线放| 久久福利视频一区二区| 日韩视频免费观看高清在线视频| 开心九九激情九九欧美日韩精美视频电影 | 亚洲欧美激情视频在线观看一区二区三区| 久久精品亚洲精品国产欧美kt∨| 亚洲柠檬福利资源导航| 国产成人精品影视| 亚洲美女在线一区| 成人午夜激情视频| 偷拍亚洲欧洲综合| 国产精品网站在线观看| 在线一区二区三区| 日韩欧美激情在线| 99久久精品一区二区| 久久久久九九视频| 天天综合网天天综合色| 天天色图综合网| 一区二区三区日本| 国产精品二区一区二区aⅴ污介绍| 在线精品视频小说1| k8久久久一区二区三区| 成人av在线电影| 狠狠色狠狠色综合系列| 成人黄色在线看| 成人国产一区二区三区精品| 激情五月婷婷综合网| 久久先锋影音av鲁色资源网| 91丝袜呻吟高潮美腿白嫩在线观看| 一区二区三区高清不卡| av成人动漫在线观看| av不卡在线观看| 欧美日韩在线精品一区二区三区激情| 天堂成人国产精品一区| 国产亚洲精品bt天堂精选| 欧美日韩久久久久久| 国产精品视频麻豆| 精品污污网站免费看| 亚洲欧洲综合另类在线| 夜夜嗨av一区二区三区网页| 欧美猛男gaygay网站| 偷拍亚洲欧洲综合| 国内外精品视频| 国产一区二区视频在线| www.欧美精品一二区| 香蕉影视欧美成人| 中文字幕在线观看一区| 亚洲成人激情综合网| 国内精品嫩模私拍在线| 日韩在线a电影| 91一区二区在线| 久久精品一区二区三区四区| 亚洲裸体xxx| 一二三四区精品视频| 国产精品一区在线观看乱码| 日本一区二区在线不卡| 91成人看片片| 中文字幕巨乱亚洲| 国精品**一区二区三区在线蜜桃| 色狠狠桃花综合| 亚洲精品久久久蜜桃| 99久久er热在这里只有精品15| 在线精品观看国产| 亚洲乱码国产乱码精品精可以看 | 亚洲视频免费在线观看| 亚洲人xxxx| 成人激情av网| 日韩三级高清在线| 麻豆久久久久久| www.欧美色图| 日韩限制级电影在线观看| 亚洲一二三四久久| 日韩女优av电影| av电影在线观看一区| 不卡av电影在线播放| 亚洲视频在线一区观看| 麻豆一区二区三区| 国产成人精品免费视频网站| 国产毛片精品视频| 成人一级视频在线观看| 久久综合狠狠综合久久激情| 国产欧美精品一区aⅴ影院| 亚洲一二三级电影| 国产欧美日韩中文久久| 日韩不卡一二三区| 国产精品美日韩| 91精品国产综合久久国产大片| 午夜精品免费在线观看| 狠狠色丁香九九婷婷综合五月 | 亚洲免费在线播放| 国产又黄又大久久| 久久精品国产亚洲一区二区三区| 精品福利二区三区| 欧美精三区欧美精三区| 成人小视频免费观看| 久久影院午夜论| 久久99精品久久久久久国产越南 | 美国毛片一区二区三区| 国产精品久久久久精k8 | 日产欧产美韩系列久久99| 国产精品免费久久| 一区二区在线电影| 国产精品美女一区二区| 成年人国产精品| 国产毛片精品国产一区二区三区| 麻豆精品在线看| 国内一区二区视频| 白白色亚洲国产精品| 日本韩国欧美三级| 成人av电影在线| 色狠狠桃花综合| 欧美日韩一区二区三区不卡| 7777精品伊人久久久大香线蕉的| 日本韩国一区二区三区| 亚洲欧洲制服丝袜| 秋霞电影网一区二区| 国产精品成人免费在线| 亚洲最新视频在线观看| 精品一区二区在线视频| 93久久精品日日躁夜夜躁欧美| 欧美日韩1234| 欧美三级视频在线| 久久99国产乱子伦精品免费| 激情综合网av| 91福利在线导航| 中文字幕一区二区5566日韩| 人人精品人人爱| 91网站视频在线观看| 欧美日韩另类一区| 欧美午夜在线观看| 久久免费国产精品 | 国模娜娜一区二区三区| 国产乱子伦视频一区二区三区| 99re这里都是精品| 欧美浪妇xxxx高跟鞋交|