mysql什么时候用in,什么时候用exists

目录

写在前面

给你答案

in

exists

结论


写在前面

网上看帖子的时候,经常会看到说尽量用exists,少用in。

那么问题来了,是所有场景下都尽量用exists吗,还是具体场景具体分析。

给你答案

mysql做子查询的时候,永远记得要小表驱动大表

in

select * from A where id in (select id from B);

相当于先循环B,再循环A。B表驱动A表。

也就是当B表数据少于A表时,用in最佳。

exists

select * from A where exists (select 1 from B where B.id=A.id);

相当于先循环A,再循环B。A表驱动B表。

也就是当A表数据少于B表时,用exists最佳。

结论

其实in和exists都有其存在的必要性,虽然有时候用起来含义一样,但是其效率是不一样的,也不存在哪一个最好哪一个最差。

根据实际情况来判断使用哪种方式

猜你喜欢

转载自blog.csdn.net/A_art_xiang/article/details/114588321