经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MySQL » 查看文章
MySQL优化|in和exists的使用区别
来源:cnblogs  作者:一起学编程~  时间:2021/5/31 9:04:03  对本文有异议

本篇文章没有实际案例,只说明用法,主要说一下in和exists的使用区别。

在开始前,分享给大家我看过觉得讲数据库讲的算是很不错的,也在B站拥有百万播放量的教程。

这个MySQL视频是动力节点的老杜讲解,个人也很喜欢老杜的教学风格,老杜真的是从MySQL基础一点点带我入门,基础也学得很扎实。

这个教程总体来说就就像列文虎克教学,细到极致,妙到毫巅。

内容涵盖了MySQL的相关知识,包括MySQL概述,MySQL应用环境,MySQL系统特性,MySQL初学基础,MySQL管理工具,如何安装MySQL及MySQL新特性等等。

学完这套视频基本可掌握MySQL全套知识了,值得收藏学习,需要的小伙伴点击以下链接??

在线观看:

MySQL基础入门-mysql教程-数据库实战(MySQL基础+MySQL高级+MySQL优化+MySQL34道作业题)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

资料下载:

MySQL视频教程全套免费下载【适合零基础入门学习】 - 动力节点 (bjpowernode.com)

首先我们先来看俩张表

  • book
  • class

 

这个时候我们使用in来进行一次查询 bookid存在class表的数据

  1. 1 select * from book b where bookid in (select id from class);

 

然后使用exists来进行一次查询 bookid存在class表的数据

  1. 1 select * from book b where exists (select 1 from class where b.bookid=id );

 

会发现俩次的数据是一致的,所以下来我们来说一下,在那些情况用in 那些情况用exists

使用场景

  • 当book表的数据集小于class的数据集时 用in 优于exists
  • 当class表的数据集小于book的数据集时 用exists 优于in
  1. 1 select * from book b where bookid in (select id from class);
  2. 2 它的运行方式是这样的,类似于俩个for循环
  3. 3 for select * from class
  4. 4 for select * from book where book.id=class.id
  5. 5
  6. 6 select * from book b where exists (select 1 from class where b.bookid=id );
  7. 7 exists的运行方式如下
  8. 8 for select * from book
  9. 9 for select * from class where class.id=book.id

以上俩个案例简单来说 :

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

————————————————
原文链接:https://blog.csdn.net/fangkang7/article/details/105364936

原文链接:http://www.cnblogs.com/chaichaichai/p/14821862.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号