亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > SQL查詢中in和exists的區別分析

SQL查詢中in和exists的區別分析

熱門標簽:貴州外呼回撥系統是什么 安陽天音防封電銷卡 智能語音車載電話機器人 智能外呼系統需要多少錢 陽光創信ai外呼獲客系統助力 云南全自動外呼系統公司 衛星地圖標注距離 外呼系統的話術 競圣地圖標注服務

select * from A where id in (select id from B);

select * from A where exists (select 1 from B where A.id=B.id);

對于以上兩種情況,in是在內存里遍歷比較,而exists需要查詢數據庫,所以當B表數據量較大時,exists效率優于in。

1、select * from A where id in (select id from B);

in()只執行一次,它查出B表中的所有id字段并緩存起來。之后,檢查A表的id是否與B表中的id相等,如果相等則將A表的記錄加入結果集中,直到遍歷完A表的所有記錄。
它的查詢過程類似于以下過程:

復制代碼 代碼如下:

List resultSet={};
Array A=(select * from A);
Array B=(select id from B);

for(int i=0;iA.length;i++) {
   for(int j=0;jB.length;j++) {
      if(A[i].id==B[j].id) {
         resultSet.add(A[i]);
         break;
      }
   }
}
return resultSet;

可以看出,當B表數據較大時不適合使用in(),因為它會B表數據全部遍歷一次
如:A表有10000條記錄,B表有1000000條記錄,那么最多有可能遍歷10000*1000000次,效率很差。
再如:A表有10000條記錄,B表有100條記錄,那么最多有可能遍歷10000*100次,遍歷次數大大減少,效率大大提升。

結論:in()適合B表比A表數據小的情況

2、select * from A where exists (select 1 from B where A.id=B.id);

exists()會執行A.length次,它并不緩存exists()結果集,因為exists()結果集的內容并不重要,重要的是其內查詢語句的結果集空或者非空,空則返回false,非空則返回true。
它的查詢過程類似于以下過程:

復制代碼 代碼如下:

List resultSet={};
Array A=(select * from A);

for(int i=0;iA.length;i++) {
   if(exists(A[i].id) {  //執行select 1 from B where B.id=A.id是否有記錄返回
       resultSet.add(A[i]);
   }
}
return resultSet;

當B表比A表數據大時適合使用exists(),因為它沒有那么多遍歷操作,只需要再執行一次查詢就行。
如:A表有10000條記錄,B表有1000000條記錄,那么exists()會執行10000次去判斷A表中的id是否與B表中的id相等。
如:A表有10000條記錄,B表有100000000條記錄,那么exists()還是執行10000次,因為它只執行A.length次,可見B表數據越多,越適合exists()發揮效果。
再如:A表有10000條記錄,B表有100條記錄,那么exists()還是執行10000次,還不如使用in()遍歷10000*100次,因為in()是在內存里遍歷比較,而exists()需要查詢數據庫,我們都知道查詢數據庫所消耗的性能更高,而內存比較很快。

結論:exists()適合B表比A表數據大的情況

當A表數據與B表數據一樣大時,in與exists效率差不多,可任選一個使用。
在插入記錄前,需要檢查這條記錄是否已經存在,只有當記錄不存在時才執行插入操作,可以通過使用 EXISTS 條件句防止插入重復記錄。
insert into A (name,age) select name,age from B where not exists (select 1 from A where A.id=B.id);

EXISTS與IN的使用效率的問題,通常情況下采用exists要比in效率高,因為IN不走索引。但要看實際情況具體使用:IN適合于外表大而內表小的情況;EXISTS適合于外表小而內表大的情況。

關于exists:

EXISTS用于檢查子查詢是否至少會返回一行數據,該子查詢實際上并不返回任何數據,而是返回值True或False。
EXISTS 指定一個子查詢,檢測行的存在。
語法: EXISTS subquery
參數: subquery 是一個受限的 SELECT 語句 (不允許有 COMPUTE 子句和 INTO 關鍵字)。
結果類型: Boolean 如果子查詢包含行,則返回 TRUE ,否則返回 FLASE 。
結論:select * from A where exists (select 1 from B where A.id=B.id)
EXISTS(包括 NOT EXISTS )子句的返回值是一個boolean值。 EXISTS內部有一個子查詢語句(SELECT ... FROM...), 我將其稱為EXIST的內查詢語句。其內查詢語句返回一個結果集。 EXISTS子句根據其內查詢語句的結果集空或者非空,返回一個布爾值。
一種通俗的可以理解為:將外查詢表的每一行,代入內查詢作為檢驗,如果內查詢返回的結果取非空值,則EXISTS子句返回TRUE,這一行行可作為外查詢的結果行,否則不能作為結果。
分析器會先看語句的第一個詞,當它發現第一個詞是SELECT關鍵字的時候,它會跳到FROM關鍵字,然后通過FROM關鍵字找到表名并把表裝入內存。接著是找WHERE關鍵字,如果找不到則返回到SELECT找字段解析,如果找到WHERE,則分析其中的條件,完成后再回到SELECT分析字段。最后形成一張我們要的虛表。
WHERE關鍵字后面的是條件表達式。條件表達式計算完成后,會有一個返回值,即非0或0,非0即為真(true),0即為假(false)。同理WHERE后面的條件也有一個返回值,真或假,來確定接下來執不執行SELECT。
分析器先找到關鍵字SELECT,然后跳到FROM關鍵字將STUDENT表導入內存,并通過指針找到第一條記錄,接著找到WHERE關鍵字計算它的條件表達式,如果為真那么把這條記錄裝到一個虛表當中,指針再指向下一條記錄。如果為假那么指針直接指向下一條記錄,而不進行其它操作。一直檢索完整個表,并把檢索出來的虛擬表返回給用戶。EXISTS是條件表達式的一部分,它也有一個返回值(true或false)。

您可能感興趣的文章:
  • MySQL exists 和in 詳解及區別
  • mySQL中in查詢與exists查詢的區別小結
  • 安裝mysql出錯”A Windows service with the name MySQL already exists.“如何解決
  • MYSQL IN 與 EXISTS 的優化示例介紹
  • mysql insert if not exists防止插入重復記錄的方法
  • 詳解sql中exists和in的語法與區別

標簽:湘潭 鄂爾多斯 欽州 周口 預約服務 營口 寧夏 河源

巨人網絡通訊聲明:本文標題《SQL查詢中in和exists的區別分析》,本文關鍵詞  SQL,查詢,中,和,exists,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL查詢中in和exists的區別分析》相關的同類信息!
  • 本頁收集關于SQL查詢中in和exists的區別分析的相關信息資訊供網民參考!
  • 推薦文章
    欧美一区二区三区性| 国产精品免费久久| 99久久网站| 国产视频一区二区在线播放| 日韩专区亚洲综合久久| 91麻豆精品国产自产在线观看一区| 亚洲精品影院| 四虎影视久久| 成人免费一级纶理片| 国产91丝袜在线播放0| 色综合久久天天综合绕观看| 国产麻豆精品视频| 国产精品免费久久| 一级女性全黄久久生活片| 欧美国产日韩一区二区三区| 麻豆午夜视频| 国产网站免费| 欧美一级视频免费观看| 色综合久久天天综合绕观看| 精品国产一区二区三区久久久蜜臀| 成人免费观看的视频黄页| 香蕉视频三级| 国产不卡在线观看| 毛片的网站| 国产一区二区精品| 国产成人精品一区二区视频| 日韩av片免费播放| 欧美一级视频免费观看| 国产91精品系列在线观看| 精品久久久久久免费影院| 精品在线观看一区| 亚洲精品久久玖玖玖玖| 999久久66久6只有精品| 四虎论坛| 亚欧成人乱码一区二区| 久久国产精品永久免费网站| 99久久网站| 午夜在线亚洲男人午在线| 黄视频网站在线免费观看| 91麻豆国产福利精品| 九九热精品免费观看| 日本免费看视频| 国产精品12| 精品国产亚洲一区二区三区| 一级女人毛片人一女人| 四虎影视久久| 国产精品自拍亚洲| a级毛片免费全部播放| 国产极品精频在线观看| 亚洲精品影院| 欧美1区| 日本特黄特色aa大片免费| 免费毛片播放| 91麻豆精品国产片在线观看| 九九九国产| 日本伦理黄色大片在线观看网站| 日韩欧美一及在线播放| 久久成人亚洲| 免费国产在线观看| 91麻豆精品国产自产在线观看一区| 九九久久99综合一区二区| 免费的黄视频| 欧美激情中文字幕一区二区| 国产麻豆精品hdvideoss| 精品视频在线观看一区二区三区| 精品久久久久久中文字幕一区| 成人免费一级纶理片| 精品久久久久久免费影院| 日韩av片免费播放| 国产国产人免费视频成69堂| 国产麻豆精品视频| 91麻豆精品国产综合久久久| 九九热精品免费观看| 国产伦精品一区二区三区在线观看| 欧美激情影院| 色综合久久天天综合| 国产网站免费在线观看| 日韩女人做爰大片| 国产91丝袜在线播放0| 日韩专区亚洲综合久久| 精品视频在线观看一区二区| 台湾毛片| 成人免费网站久久久| 国产精品自拍亚洲| 久草免费在线视频| 日韩av片免费播放| 日本免费乱理伦片在线观看2018| 日日夜人人澡人人澡人人看免| 免费一级生活片| 欧美激情一区二区三区视频高清| 免费一级片网站| 欧美一级视| 美女免费精品高清毛片在线视| 四虎论坛| 日韩专区在线播放| 99久久精品国产免费| 国产视频久久久久| 久久国产精品永久免费网站| 国产高清在线精品一区二区 | 国产精品1024永久免费视频 | 精品视频在线观看免费| 欧美18性精品| 久久成人亚洲| 天天做日日爱夜夜爽| 亚洲天堂一区二区三区四区| 国产亚洲男人的天堂在线观看| 精品久久久久久免费影院| 日韩免费片| 999久久66久6只有精品| 国产麻豆精品hdvideoss| 成人av在线播放| 欧美大片一区| 成人高清免费| 国产一级生活片| 欧美国产日韩一区二区三区| 欧美1区| 成人影视在线播放| 精品视频一区二区三区免费| 亚飞与亚基在线观看| 99久久精品费精品国产一区二区| 天天做日日爱| 久久国产精品自由自在| 久久久久久久网| 亚洲第一色在线| 日韩一级黄色大片| 国产精品自拍在线| 91麻豆精品国产片在线观看| 美女免费毛片| 成人高清视频免费观看| 国产国语在线播放视频| 午夜在线亚洲男人午在线| 日本免费乱人伦在线观看| 国产精品自拍亚洲| 国产91精品一区| 久久久成人影院| 国产精品自拍亚洲| 亚洲 男人 天堂| 欧美爱色| 日本在线不卡免费视频一区| 欧美激情一区二区三区视频| 精品国产一区二区三区精东影业| 91麻豆tv| 中文字幕一区二区三区 精品| 成人免费网站视频ww| 亚洲第一色在线| 精品国产香蕉在线播出| 国产国产人免费视频成69堂| 日韩在线观看视频网站| 国产精品123| 欧美激情一区二区三区在线 | 一 级 黄 中国色 片| 国产原创中文字幕| 精品视频在线观看视频免费视频| 97视频免费在线观看| 四虎久久影院| 欧美另类videosbestsex高清 | 精品国产一区二区三区久久久狼| 九九免费精品视频| 欧美另类videosbestsex视频| 精品国产三级a∨在线观看| 欧美日本免费| 亚洲女初尝黑人巨高清在线观看| 日韩一级黄色大片| 91麻豆精品国产片在线观看| 精品国产一区二区三区精东影业| 欧美日本国产| 韩国毛片基地| 国产一区二区精品| 国产视频在线免费观看| 一级片片| 国产成人精品综合在线| 日本在线www| 日本免费乱人伦在线观看| 精品视频在线观看视频免费视频| 四虎影视库| 日韩中文字幕一区| 黄色福利片| 亚洲精品久久玖玖玖玖| 亚洲第一色在线| 四虎影视库| 国产成人精品综合在线| 欧美爱色| 日本特黄特黄aaaaa大片| 日本特黄特黄aaaaa大片| 国产一区二区精品| 国产精品1024永久免费视频| 日韩在线观看视频网站| 国产一区二区精品在线观看| 精品在线观看一区| 精品国产一区二区三区免费 | 91麻豆精品国产综合久久久| 欧美国产日韩在线| 国产91素人搭讪系列天堂| 成人免费网站视频ww| 精品视频在线观看一区二区三区| 亚洲 男人 天堂| 免费毛片播放| 精品国产一区二区三区精东影业| 亚欧成人乱码一区二区| 黄视频网站在线免费观看|