概述
目录
1、小表驱动大表
2、in与exists如何选择
1、小表驱动大表
小表驱动大表,即小的数据集驱动大得数据集
for(int i=5;.......) { for(int j=1000;......) {} }
如果小的循环在外层,对于数据库连接来说就只连接5次,进行1000次操作,如果1000在外,则需要进行1000次数据库连接,从而浪费资源,增加消耗。这就是为什么要小表驱动大表。
2、in与exists如何选择
- exist与in可以相互替代
使用in:
select * from employees where dep_id in (select id from mysqlpro.department); #循环执行过程 # for select id from mysqlpro.department # for select * from employees where employees.dep_id = department.id
使用exists
select * from employees e where exists(select 1 from mysqlpro.department d where d.id = e.dep_id); #循环执行过程 #for select * from employees e # for select 1 from mysqlpro.department d where d.id = e.dep_id
- in与exist选择
- 当A 表中数据多于 B 表中的数据时,这时我们使用IN 优于 EXISTS(前多后少)
- 当B表中数据多于 A 表中的数据时,这时我们使用EXISTS 优于 IN(前少后多)
- 因此是使用IN 还是使用EXISTS 就需要根据我们的需求决定了。但是如果两张表中的数据量差不多时那么是使用IN 还是使用 EXISTS 差别不大
- EXISTS 子查询只返回TRUE 或 FALSE ,因此子查询中的SELECT * 可以是SELECT 1 或者其他
最后
以上就是乐观大门为你收集整理的你可能不知道in与exists的区别,你品,你细品的全部内容,希望文章能够帮你解决你可能不知道in与exists的区别,你品,你细品所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复