当前位置: 数据库>sqlserver
sql语句中in与exists的区别
来源: 互联网 发布时间:2014-08-29
本文导语: 本节主要内容: sql语句中in与exists的区别 先来看两个查询语句: 代码示例: select * from A where id in (select id from B); select * from A where exists (select 1 from B where A.id=B.id); 以上两种情况中,in是在内存里遍历比较,而exists需要查询数...
本节主要内容:
sql语句中in与exists的区别
先来看两个查询语句:
代码示例:
select * from A where id in (select id from B);
select * from A where exists (select 1 from B where A.id=B.id);
select * from A where exists (select 1 from B where A.id=B.id);
以上两种情况中,in是在内存里遍历比较,而exists需要查询数据库,所以当B表数据量较大时,exists效率优于in。
1、select * from A where id in (select id from B);
in()只执行一次,它查出B表中的所有id字段并缓存起来。之后,检查A表的id是否与B表中的id相等,如果相等则将A表的记录加入结果集中,直到遍历完A表的所有记录。
它的查询过程类似于以下过程:
List resultSet={};
Array A=(select * from A);
Array B=(select id from B);
for(int i=0;i
Array A=(select * from A);
Array B=(select id from B);
for(int i=0;i