in与exist

来源:互联网 发布:vue.js文件下载和上传 编辑:程序博客网 时间:2024/06/05 11:30

select * from table_a a where a.id in (select b.id from table_b b);

select * from table_a a where  exists(select b.id from table_b b where a.id=b.id);


如上两个查询语句,in语句只执行了一次,它查出b表中的所有id字段并缓存起来。然后,检查a表的id是否与b表中的id相等,如果相等则将a表的记录加入结果集中,直到遍历完a表的所有记录.exists()会执行a.length次,它并不缓存exists()结果集,因为exists()结果集的内容并不重要,重要的是结果集中是否有记录,如果有则返回true,没有则返回false.

一般的in适用于b表数据量较小的情况,exists适用于a表数据量较小的情况。

0 0
原创粉丝点击