暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 子查询取消嵌套

原创 Asher.HU 2021-02-04
959


子查询取消嵌套中,优化器将嵌套查询转换为等效的join语句,然后优化联接。

通过这种转换,优化器可以在访问路径,联接方法和联接顺序选择期间考虑子查询表。仅当保证所得的join语句返回与原始语句相同的行,并且子查询不包含诸如之类的聚合函数时,优化器才能执行此转换AVG

例如,假设您以用户身份连接sh并执行以下查询:

SELECT * 
FROM   sales
WHERE  cust_id IN ( SELECT cust_id 
                    FROM   customers );

因为该customers.cust_id列是主键,所以优化程序可以将复杂查询转换为以下保证返回相同数据的联接语句:

SELECT sales.* 
FROM   sales, customers
WHERE  sales.cust_id = customers.cust_id;

如果优化器无法将复杂的语句转换为join语句,它将为父语句和子查询选择执行计划,就像它们是单独的语句一样。然后,优化器执行子查询,并使用返回的行执行父查询。为了提高整体执行计划的执行速度,优化器可以有效地对子计划进行排序。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论