Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle如何在视图上实现SQL查询_Oracle_Oracle11g - Fatal编程技术网

Oracle如何在视图上实现SQL查询

Oracle如何在视图上实现SQL查询,oracle,oracle11g,Oracle,Oracle11g,我们使用SQL查询在基表上定义了一个视图(SQLquery1) 我试图了解在视图上查询(SQLquery2)是如何工作的 当我在视图上运行SQL时,Oracle是否首先执行query1来创建临时表,然后在临时表上运行query2 还是通过组合query1和query2来创建一个复合查询以给出结果 (如果直接在基表上运行,则我的查询2具有很高的选择性,并且复合查询的运行速度应该比首先执行查询1快得多) 还是通过组合query1和query2来创建一个复合查询以给出结果 是的,CBO(oracl

我们使用SQL查询在基表上定义了一个视图(SQLquery1

我试图了解在视图上查询(SQLquery2)是如何工作的

  • 当我在视图上运行SQL时,Oracle是否首先执行query1来创建临时表,然后在临时表上运行query2

  • 还是通过组合query1和query2来创建一个复合查询以给出结果

  • (如果直接在基表上运行,则我的查询2具有很高的选择性,并且复合查询的运行速度应该比首先执行查询1快得多)

  • 还是通过组合query1和query2来创建一个复合查询以给出结果
  • 是的,CBO(oracle基于成本的优化器)扩展最终查询并对其进行转换,并构建执行计划,您可以在跟踪10053(优化器跟踪)中检查转换后的最终查询,也可以使用

    注意。DBMS_UTILITY.EXPAND_SQL_TEXT已出现在12.1中,但您标记了Oracle 11g,因此需要使用
    DBMS_sql2.EXPAND_SQL_TEXT
    ,例如: