Mysql中exists和in的区别

参考答案

exists 与 in 的主要区别如下:

  • 子查询使用 exists,会先进行主查询,将查询到的每行数据循环带入子查询校验是否存在,过滤出整体的返回数据。子查询使用 in,会先进行子查询获取结果集,然后主查询匹配子查询的结果集,返回数据。
  • 外表(主查询的表)、内表(子查询的表)相对大小情况不一样时,查询效率不一样。两表大小相当,in 和 exists 差别不大;内表大,用 exists 效率较高;内表小,用 in 效率较高。
  • 不管外表(主查询的表)与内表(子查询的表)的大小,not exists 的效率一般要高于 not in,跟子查询的索引访问类型有关。

 

以上,是MySQL面试题【Mysql中exists和in的区别】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧