我是靠谱客的博主 乐观大门,最近开发中收集的这篇文章主要介绍你可能不知道in与exists的区别,你品,你细品,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

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选择
  1. 当A 表中数据多于 B 表中的数据时,这时我们使用IN 优于 EXISTS(前多后少)
  2. 当B表中数据多于 A 表中的数据时,这时我们使用EXISTS 优于 IN(前少后多)
  3. 因此是使用IN 还是使用EXISTS 就需要根据我们的需求决定了。但是如果两张表中的数据量差不多时那么是使用IN 还是使用 EXISTS 差别不大
  4. EXISTS 子查询只返回TRUE 或 FALSE ,因此子查询中的SELECT * 可以是SELECT 1 或者其他

最后

以上就是乐观大门为你收集整理的你可能不知道in与exists的区别,你品,你细品的全部内容,希望文章能够帮你解决你可能不知道in与exists的区别,你品,你细品所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部