参考答案
exists 与 in 的主要区别如下:
- 子查询使用 exists,会先进行主查询,将查询到的每行数据循环带入子查询校验是否存在,过滤出整体的返回数据。子查询使用 in,会先进行子查询获取结果集,然后主查询匹配子查询的结果集,返回数据。
- 外表(主查询的表)、内表(子查询的表)相对大小情况不一样时,查询效率不一样。两表大小相当,in 和 exists 差别不大;内表大,用 exists 效率较高;内表小,用 in 效率较高。
- 不管外表(主查询的表)与内表(子查询的表)的大小,not exists 的效率一般要高于 not in,跟子查询的索引访问类型有关。
以上,是MySQL面试题【Mysql中exists和in的区别】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—