oracle里的查询转换的作用
oracle里查询转换,又称查询改写,它是Oracle在解析目标SQL的过程中的重要一步,其含义是指Oracle在解析目标SQL时可能会对其做等价改写,目的是为了能更高效地执行目标SQL,即Oracle可能会将目标SQL改写成语义上完全等价但执行效率却更高的形式。Oracle数据库里SQL语句的执行过程可以如下表示:
4.2子查询展开
它是指优化器不再将目标SQL中的子查询当作一个独立的处理的单元来单独执行,而是将该子查询转换为它自身和外部查询之间等价的表连接。这种等价表连接转换要么是将子查询拆开(即将该子查询中的表、视图从子查询中拿出来,然后和外部查询中的表、视图做表连接),要么是不拆开但是会把该子查询转换为一个内嵌视图,然后再和外部查询中的表、视图做表连接。有的子查询做不了子查询展开的话,此时Oracle还会将该子查询当作一个独立的处理单元来单独执行。
oracle数据库里子查询前的where条件如果是如下这些条件之一,那么这种类型的目标SQL在满足一定的条件后就可以做子查询展开:
如果是SINGLE-ROW则子查询返回一条,其他的返回可以包含多条。
原文:https://www.cnblogs.com/studyking/p/11844939.html