首页 > 数据库技术 > 详细

Oracle 里的查询转换

时间:2019-11-12 22:38:37      阅读:68      评论:0      收藏:0      [点我收藏+]

oracle里的查询转换的作用

oracle里查询转换,又称查询改写,它是Oracle在解析目标SQL的过程中的重要一步,其含义是指Oracle在解析目标SQL时可能会对其做等价改写,目的是为了能更高效地执行目标SQL,即Oracle可能会将目标SQL改写成语义上完全等价但执行效率却更高的形式。Oracle数据库里SQL语句的执行过程可以如下表示:

技术分享图片

 

 4.2子查询展开

它是指优化器不再将目标SQL中的子查询当作一个独立的处理的单元来单独执行,而是将该子查询转换为它自身和外部查询之间等价的表连接。这种等价表连接转换要么是将子查询拆开(即将该子查询中的表、视图从子查询中拿出来,然后和外部查询中的表、视图做表连接),要么是不拆开但是会把该子查询转换为一个内嵌视图,然后再和外部查询中的表、视图做表连接。有的子查询做不了子查询展开的话,此时Oracle还会将该子查询当作一个独立的处理单元来单独执行。

oracle数据库里子查询前的where条件如果是如下这些条件之一,那么这种类型的目标SQL在满足一定的条件后就可以做子查询展开:

  • SINGLE-ROW(即=、<、>、<=、>=和<>)
  • EXISTS
  • NOT EXISTS
  • IN
  • NOT IN
  • ANY
  • ALL

如果是SINGLE-ROW则子查询返回一条,其他的返回可以包含多条。

 

 

 

 

Oracle 里的查询转换

原文:https://www.cnblogs.com/studyking/p/11844939.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!