in与exist

原创 2015年07月08日 15:03:25

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表数据量较小的情况。

IN 和 EXIST的区别

  • 2012年05月22日 06:59
  • 38KB
  • 下载

数据库SQL优化——使用EXIST代替IN

查询进行优化,应尽量避免全表扫描 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 尝试下面的技巧以避免优化器错选了表扫描:· 使用...

in exist not_in

  • 2013年03月22日 15:35
  • 31KB
  • 下载

关于in 和 exist 的区别-------------近期优化sql 语句的时候再次碰到

近期优化sql 语句的时候再次碰到 看到数据库查询中一些用法有些不合理,并且执行的效率很低,碰到了in 与exists 的相关用法 本来是想拿自己数据库里面的例子来展示的,有些不允许,所有就找了...

maven + Mybatis 运行时The error may exist in SQL Mapper Configuration

org.apache.ibatis.exceptions.PersistenceException:  ### Error building SqlSession. ### The error m...

CS0234 The type or namespace name 'Mvc' does not exist in the namespace 'Microsoft.AspNet' (are you

CS0234 The type or namespace name 'Mvc' does not exist in the namespace 'Microsoft.AspNet' (are you ...

数据查询时几个关键字(IN、OR、EXIST)的效率分析

1、IN 和 OR 的执行效率: a.id IN(15,150,200,300) a.id=15 OR a.id=150 OR a.id=200 OR a.id=300 两个的执行效率基本一...

SQL中in与exist的区别

select * from A where id in(select id from B)以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B...

sql中exist与in的区别

in 和 exists也是很好区别的. in 是一个集合运算符.a in {a,c,d,s,d....}这个运算中,前面是一个元素,后面是一个集合,集合中的元素类型是和前面的元素一样的. 而exist...
  • javadxz
  • javadxz
  • 2011年05月20日 11:56
  • 338
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:in与exist
举报原因:
原因补充:

(最多只允许输入30个字)