子查询的种类和性能

子查询

	除了单个表的SELECT查询,还可以进行子查询,嵌套在查询中的查询。
	优势:进行复杂查询,容易理解查询过程,无法直接从数据表中查询数据,需要从查询结果集中再次进行查询

	查询可以分为:关联子查询和非关联子查询
	非关联子查询从数据表中查询了数据结果,如果这个数据结果只执行一次,然后这个数据结果作为主查询的条件进行执行。
	关联子查询需要执行多次,即采用循环的方式,先从外部查询开始,每次都传入子查询进行查询,然后再将结果反馈给外部,这种嵌套的执行方式就称为关联子查询。

EXISTS子查询

	关联子查询通常也会和 EXISTS 一起来使用,EXISTS 子查询用来判断条件是否满足,满足的话为 True,不满足为 False。

集合比较子查询

IN 判断是否在集合中
ANY 与比较操作符一起用,和子查询返回的任何值作比较 比任意一个人高
ALL 与比较操作符一起用,和子查询返回的所有值作比较 比所有人高
SOME 实际上是ANY的别名 一般用ANY

A			B
大		小	IN效率比EXIST高 B表中对列索引
小		大	EXIST效率大于IN 

IN表是外边和内表进行hash连接,是先执行子查询。
EXISTS是对外表进行循环,然后在内表进行查询。
因此如果外表数据量大,则用IN,如果外表数据量小,也用EXISTS。
IN有一个缺陷是不能判断NULL,因此如果字段存在NULL值,则会出现返回,因为最好使用NOT EXISTS。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值