最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql中in和exists有什么区别

来源:懂视网 责编:小采 时间:2020-11-09 08:37:37
文档

mysql中in和exists有什么区别

mysql中in和exists有什么区别:exists和in的区别有:in是把外表和内表做hash连接,先查询内表;exists是对外表做loop循环,循环后在对内表查询;在外表大的时用in效率更快,内表大用exists更快exists和in的区别 #对B查询涉及id,使用索引,故B表效率高,可用大表 -->外小内大
推荐度:
导读mysql中in和exists有什么区别:exists和in的区别有:in是把外表和内表做hash连接,先查询内表;exists是对外表做loop循环,循环后在对内表查询;在外表大的时用in效率更快,内表大用exists更快exists和in的区别 #对B查询涉及id,使用索引,故B表效率高,可用大表 -->外小内大
exists和in的区别有:in是把外表和内表做hash连接,先查询内表;exists是对外表做loop循环,循环后在对内表查询;在外表大的时用in效率更快,内表大用exists更快

exists和in的区别  

#对B查询涉及id,使用索引,故B表效率高,可用大表 -->外小内大
select * from A where exists (select * from B where A.id=B.id);
#对A查询涉及id,使用索引,故A表效率高,可用大表 -->外大内小
select * from A where A.id in (select id from B);

(1)exists是对外表做loop循环,每次loop循环再对内表(子查询)进行查询,那么因为对内表的查询使用的索引(内表效率高,故可用大表),而外表有多大都需要遍历,不可避免(尽量用小表),故内表大的使用exists,可加快效率;

(2)in是把外表和内表做hash连接,先查询内表,再把内表结果与外表匹配,对外表使用索引(外表效率高,可用大表),而内表多大都需要查询,不可避免,故外表大的使用in,可加快效率。

(3)如果查询的两个表大小相当,那么用in和exists差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。

文档

mysql中in和exists有什么区别

mysql中in和exists有什么区别:exists和in的区别有:in是把外表和内表做hash连接,先查询内表;exists是对外表做loop循环,循环后在对内表查询;在外表大的时用in效率更快,内表大用exists更快exists和in的区别 #对B查询涉及id,使用索引,故B表效率高,可用大表 -->外小内大
推荐度:
标签: 区别 in 语句
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top