首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要使用关联子查询?

为什么要使用关联子查询?
EN

Stack Overflow用户
提问于 2020-11-27 14:45:22
回答 1查看 233关注 0票数 2

据我所见,相关的子查询可以使用多列子查询或联接重写。而且它们通常比相关子查询的性能更好。

那么,在哪些可能的场景中,关联子查询可以是更好的选项还是唯一的选项?(我使用Oracle数据库)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-27 14:50:04

Oracle有一个很好的优化器,但相关子查询有时是表示查询的最有效方法。例如:

代码语言:javascript
复制
select t.*,
       (select count(*) from z where z.t_id = t.id)
from t;

使用z(t_id)上的索引可以非常有效,因为它避免了外部聚合。

在其他情况下,它们都是有效的,并直接转化为一个问题:获取z中不存在的所有ts。

代码语言:javascript
复制
select t.*
from t
where not exists (select 1 from z where z.id = t.id);

最后,关联子查询只是横向连接的一个例子。横向连接可以相当强大。例如,要从上一行获取所有列,可以使用:

代码语言:javascript
复制
select t.*, t2.*
from t cross join lateral
     (select t2.*
      from t t2
      where t2.date < t.date
      order by t2.date desc
      fetch first 1 row only
     ) t2;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65039247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档