- 区别1当B表的数据远大于A表的数据 exits的效率更高(B表大,用exits)
当B表的数据远小于A表的数据 in的效率更高(B表小,用in) 当B表的数据和A表的数据差不多 in/exits效率基本一致
- 区别2-- 如果关联的字段是多个的时候用exits效率更高,可以减少B表的查询次数,提高效率
--例子:除了通过id,还需要name字段来进行关联 -- 使用in来完成会查询B表多次,效率低 select * from A where A.id in (select bid from B ) and A.name in (select bname from B ) ; -- 使用existis来完成,可以减少B表的查询次数,提高效率 select * from A where EXISTS (select 1 from B.bid = A.id and B.bname = A.name )
| mysql中in和exists的区别 |
| -- in写法 | select * from A where A.id in (select bid from B ) and A.name in (select bname from B ) ; |
| -- exits写法 | select * from A where EXISTS (select 1 from B.bid = A.id ); |
|
|
|
|
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。