SQL中IN和EXISTS用法的区别
来源:互联网 发布:360卸载找不到软件 编辑:程序博客网 时间:2024/06/05 20:57
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
如果查询的两个表大小相当,那么用in和exists差别不大;如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in;
例如:表A(小表),表B(大表)
select * from A whre A.id in(select B.id from B) 效率低用到了A表上id列的索引;
select * from A where exists(select B.id from B where B.id = A.id) 效率高,用到了B表上id列的索引
in()只执行一次,它查出B表中的所有id字段并缓存起来。之后,检查A表的id是否与B表中的id相等,如果相等则将A表的记录加入结果集中,直到遍历完A表的所有记录。exists()会执行A.length次,它并不缓存exists()结果集,因为exists()结果集的内容并不重要,重要的是其内查询语句的结果集空或者非空,空则返回false,非空则返回true。
阅读全文
0 0
- SQL中IN和EXISTS用法的区别,sql中exists,not exists的用法
- SQL中IN和EXISTS用法的区别,sql中exists,not exists的用法
- sql中in 和 exists的用法和性能区别
- sql 中 in 和 exists 的 用法和区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- SQL中IN和EXISTS用法的区别
- Android Studio和eclipse混淆打包总结
- 最大公约数及最小公倍数
- C++实验6
- QWidget居中显示
- N个数的全排列
- SQL中IN和EXISTS用法的区别
- C#的Socket实现UDP协议通信
- POJ1840
- 判断是否是对称矩阵(解题报告)
- oracle如何判断十进制数对应二进制指定位数是否为1
- L2-1 点赞狂魔 (天梯赛决赛)
- 高端物流快递公司网站织梦模板
- SQLServer中char、varchar、nchar、nvarchar的区别
- Android/Html图文混排