Oracle SQL谓词推进、视图合并

本文探讨了Oracle SQL中的两种重要优化技术:谓词推进和视图合并。通过实例展示了不同情况下,这两种技术如何影响查询性能,包括NO_MERGE、子查询展开、UNNEST等选项,并分析了各种组合的成本cost,揭示了默认情况下如何实现最佳性能。
摘要由CSDN通过智能技术生成
Oracle的查询优化器在评估sql的执行计划成本之前,会对有些sql做等价改写,这个等价指的是语义上是等价的,但是sql结构发生变化。常见的改写包括:
  谓词推进(predicate push)

  视图合并(view merge)

  子查询展开(subquery unnest)

  星型转换(star transformation)
  查询重写(query rewrite)

这次我们来看下其中最常见的两种:谓词推进和视图合并。

分别对应的hint主要有如下这些:
    谓词推进
        PUSH_PRED
        NO_PUSH_PRED
    视图合并
       MERGE

       NO_MERGE

    子查询展开

       UNNEST

       NO_UNNEST

   星型转换

       STAR_TRANSFORMATION
       NO_STAR_TRANSFORMATION
    查询重写
      REWRITE

      NO_REWRITE


基础数据准备

[oracle@sean ~]$ sqlplus hr/hr

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jul 7 14:48:47 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

HR@sean> desc employees
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPLOYEE_ID                               NOT NULL NUMBER(6)
 FIRST_NAME                                         VARCHAR2(20)
 LAST_NAME                                 NOT NULL VARCHAR2(25)
 EMAIL                                     NOT NULL VARCHAR2(25)
 PHONE_NUMBER                                       VARCHAR2(20)
 HIRE_DATE                                 NOT NULL DATE
 JOB_ID                                    NOT NULL VARCHAR2(10)
 SALARY                                             NUMBER(8,2)
 COMMISSION_PCT                                     NUMBER(2,2)
 MANAGER_ID                                         NUMBER(6)
 DEPARTMENT_ID                                      NUMBER(4)

HR@sean> select EMPLOYEE_ID,FIRST_NAME,LAST_NAME,MANAGER_ID from employees where rownum<10;

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 MANAGER_ID
----------- -------------------- ------------------------- ----------
        198 Donald               OConnell                         124
        199 Douglas              Grant                            124
        200 Jennifer             Whalen                           101
        201 Michael              Hartstein                        100
        202 Pat                  Fay                              201
        203 Susan                Mavris                           101
        204 Hermann             
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值