电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL中in和exists區別詳解

瀏覽:2日期:2023-10-02 10:48:36
一、提前準備

為了大家學習方便,我在這里面建立兩張表并為其添加一些數據。

一張水果表,一張供應商表。

水果表 fruits表

f_id f_name f_price a1 apple 5 a2 appricot 2 b1 blackberry 10 b2 berry 8 c1 cocount 9

供應商表 suppliers表

s_id s_name 101 天虹 102 沃爾瑪 103 家樂福 104 華潤萬家

我們將用這兩張表做演示。

二、什么是exists

exists關鍵字后面的參數是一個任意的子查詢,系統對子查詢進行運算以判斷它是否返回行,如果至少返回一行,那么exists的結果為true ,此時外層的查詢語句將進行查詢;如果子查詢沒有返回任何行,那么exists的結果為false,此時外層語句將不進行查詢。

需要注意的是,當我們的子查詢為 SELECT NULL 時,MYSQL仍然認為它是True。

MySQL中in和exists區別詳解

MySQL中in和exists區別詳解

三、什么是in

in 關鍵字進行子查詢時,內層查詢語句僅僅返回一個數據列,這個數據列的值將提供給外層查詢語句進行比較操作。

為了測試in 關鍵字,我在水果表中加了s_id一列

水果表 fruits表

f_id f_name f_price s_id a1 apple 5 101 a2 appricot 2 103 b1 blackberry 10 102 b2 berry 8 104 c1 cocount 9 103

MySQL中in和exists區別詳解

四、exists和in

in和exists到底有啥區別那,要什么時候用in,什么時候用exists?

我們先記住口訣再說細節!“外層查詢表小于子查詢表,則用exists,外層查詢表大于子查詢表,則用in,如果外層和子查詢表差不多,則愛用哪個用哪個。

我想你已經看出來了,當fruits表數據很大的時候不適合用in,因為它最多會將fruits表數據全部遍歷一次。

如:suppliers表有10000條記錄,fruits表有1000000條記錄,那么最多有可能遍歷10000*1000000次,效率很差。

再如:suppliers表有10000條記錄,fruits表有100條記錄,那么最多有可能遍歷10000*100次,遍歷次數大大減少,效率大大提升。

但是:suppliers表有10000條記錄,fruits表有100條記錄,那么exists()還是執行10000次,還不如使用in()遍歷10000*100次,因為in()是在內存里遍歷,而exists()需要查詢數據庫,我們都知道查詢數據庫所消耗的性能更高,而內存比較很快。

因此我們只需要記住口訣:“外層查詢表小于子查詢表,則用exists,外層查詢表大于子查詢表,則用in,如果外層和子查詢表差不多,則愛用哪個用哪個。”

五、not exists和not in

MySQL中in和exists區別詳解

和exists一樣,用到了suppliers上的id索引,exists()執行次數為fruits.length,不緩存exists()的結果集。

MySQL中in和exists區別詳解

因為not in實質上等于!= and != ···,因為!=不會使用索引,故not in不會使用索引。

為啥not in不會使用索引?

我們假設有100萬數據,s_id只有0和1兩個值,利用索引我們要先讀索引文件,然后二分查找,找到對應的數據磁盤指針,再根據讀到的指針在磁盤上對應的數據,影響結果集50萬,這種情況,和直接全表掃描哪個快顯而易見。

如果你s_id字段是一個unique,就會用到索引。

如果你一定要用索引,可以用force index,不過效率不會有改善一般還會更慢就是了。

合理使用索引,Cardinality是一個重要指標,太小的話跟沒建沒區別,還浪費空間。

因此,不管suppliers和fruits大小如何,均使用not exists效率會更高。

到此這篇關于MySQL中in和exists區別詳解的文章就介紹到這了,更多相關MySQL in和exists區別內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 大米加工设备|大米加工机械|碾米成套设备|大米加工成套设备-河南成立粮油机械有限公司 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 首页-瓜尔胶系列-化工单体系列-油田压裂助剂-瓜尔胶厂家-山东广浦生物科技有限公司 | 蔬菜清洗机_环速洗菜机_异物去除清洗机_蔬菜清洗机_商用洗菜机 - 环速科技有限公司 | 大_小鼠elisa试剂盒-植物_人Elisa试剂盒-PCR荧光定量试剂盒-上海一研生物科技有限公司 | 双菱电缆-广州电缆厂_广州电缆厂有限公司 | 能耗监测系统-节能监测系统-能源管理系统-三水智能化 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 挤塑板-XPS挤塑板-挤塑板设备厂家[襄阳欧格] | 气动隔膜阀_气动隔膜阀厂家_卫生级隔膜阀价格_浙江浙控阀门有限公司 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 双杰天平-国产双杰电子天平-美国双杰-常熟双杰仪器 | 深圳市八百通智能技术有限公司官方网站| 万家财经_财经新闻_在线财经资讯网 | 灌木树苗-绿化苗木-常绿乔木-价格/批发/基地 - 四川成都途美园林 | 亿诺千企网-企业核心产品贸易 | 背压阀|减压器|不锈钢减压器|减压阀|卫生级背压阀|单向阀|背压阀厂家-上海沃原自控阀门有限公司 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 齿轮减速机_齿轮减速电机-VEMT蜗轮蜗杆减速机马达生产厂家瓦玛特传动瑞环机电 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 校园气象站_超声波气象站_农业气象站_雨量监测站_风途科技 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 盘式曝气器-微孔曝气器-管式曝气器-曝气盘-斜管填料 | 郑州市前程水处理有限公司 | 橡胶电子拉力机-塑料-微电脑电子拉力试验机厂家-江苏天源 | 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 | 氢氧化钙设备_厂家-淄博工贸有限公司 | 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 冷库安装厂家_杭州冷库_保鲜库建设-浙江克冷制冷设备有限公司 | 岸电电源-60HZ变频电源-大功率变频电源-济南诚雅电子科技有限公司 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 耐酸泵,耐腐蚀真空泵,耐酸真空泵-淄博华舜耐腐蚀真空泵有限公司 精密模具-双色注塑模具加工-深圳铭洋宇通 | 福州时代广告制作装饰有限公司-福州广告公司广告牌制作,福州展厅文化墙广告设计, | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | Akribis直线电机_直线模组_力矩电机_直线电机平台|雅科贝思Akribis-杭州摩森机电科技有限公司 | 青岛空压机,青岛空压机维修/保养,青岛空压机销售/出租公司,青岛空压机厂家电话 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 |