特殊情况如下

  1. 客户的统计信息是固定的,没办法收集统计信息 。
  2. SQL profile 是最后考虑方案,因为同样写法sql 比较多,几十条。
  3. Parallle 并行客户一般不考虑接受,OLTP 系统。
  4. 最好使用hint .

无法收集统计信息,怎样优化SQL。

首先在dev 环境收集统计信息,通过SQLHC ,收取结果。

其次使用收集信息的outline ,来代入,调优

结果如下:

SELECT

/*+

                            BEGIN_OUTLINE_DATA

                            IGNORE_OPTIM_EMBEDDED_HINTS

                            OPTIMIZER_FEATURES_ENABLE('11.2.0.4')

                            DB_VERSION('11.2.0.4')

                            ALL_ROWS

                            OUTLINE_LEAF(@"SEL$7286615E")

                            MERGE(@"SEL$5")

                            OUTLINE_LEAF(@"SEL$335DD26A")

                            MERGE(@"SEL$3")

                            OUTLINE_LEAF(@"SEL$E9CE8D49")

                            MERGE(@"SEL$07C48A2D")

                            OUTLINE_LEAF(@"SEL$B584FDD1")

                            MERGE(@"SEL$29F99543")

                            OUTLINE_LEAF(@"SEL$201A8568")

                            MERGE(@"SEL$10")

                            MERGE(@"SEL$11")

                            MERGE(@"SEL$12")

                            MERGE(@"SEL$13")

                            MERGE(@"SEL$6")

                            MERGE(@"SEL$7")

                            MERGE(@"SEL$8")

                            MERGE(@"SEL$9")

                            OUTLINE(@"SEL$4")

                            OUTLINE(@"SEL$5")

                            OUTLINE(@"SEL$2")

                            OUTLINE(@"SEL$3")

                            OUTLINE(@"SEL$17")

                            OUTLINE(@"SEL$07C48A2D")

                            MERGE(@"SEL$19")

                            OUTLINE(@"SEL$14")

                            OUTLINE(@"SEL$29F99543")

                            MERGE(@"SEL$16")

                            OUTLINE(@"SEL$1")

                            OUTLINE(@"SEL$10")

                            OUTLINE(@"SEL$11")

                            OUTLINE(@"SEL$12")

                            OUTLINE(@"SEL$13")

                            OUTLINE(@"SEL$6")

                            OUTLINE(@"SEL$7")

                            OUTLINE(@"SEL$8")

                            OUTLINE(@"SEL$9")

                            OUTLINE(@"SEL$18")

                            OUTLINE(@"SEL$19")

                            OUTLINE(@"SEL$15")

                            OUTLINE(@"SEL$16")

                            FULL(@"SEL$201A8568" "CONTAINER"@"SEL$6")

                            INDEX_RS_ASC(@"SEL$201A8568" "LOCN_GP_ACCESS_CTRL_GP_MEMBER"@"SEL$10" ("LOCN_GP_ACCESS_CTRL_GP_MEMBER"."LS_LEVEL_1"

                                    "LOCN_GP_ACCESS_CTRL_GP_MEMBER"."LS_LEVEL_2" "LOCN_GP_ACCESS_CTRL_GP_MEMBER"."LS_LEVEL_3" "LOCN_GP_ACCESS_CTRL_GP_MEMBER"."LS_LEVEL_4"))

                            FULL(@"SEL$201A8568" "SHIPMENT"@"SEL$7")

                            FULL(@"SEL$201A8568" "SHIPMENT_INSTRUCTION"@"SEL$8")

                            NO_ACCESS(@"SEL$201A8568" "RFR"@"SEL$1")

                            FULL(@"SEL$201A8568" "LOCATION_SPACE"@"SEL$13")

                            INDEX_FFS(@"SEL$201A8568" "EMPTY_POOL_CONTAINER"@"SEL$9" ("EMPTY_POOL_CONTAINER"."EMPTY_POOL_CODE" "EMPTY_POOL_CONTAINER"."CNTR_ID"))

                            FULL(@"SEL$201A8568" "CNTR_DAMAGE_DTL"@"SEL$12")

                            FULL(@"SEL$201A8568" "LOCN_GP_ACCESS_CTRL_GP_MEMBER"@"SEL$11")

                            LEADING(@"SEL$201A8568" "CONTAINER"@"SEL$6" "LOCN_GP_ACCESS_CTRL_GP_MEMBER"@"SEL$10" "SHIPMENT"@"SEL$7" "SHIPMENT_INSTRUCTION"@"SEL$8"

                                    "RFR"@"SEL$1" "LOCATION_SPACE"@"SEL$13" "EMPTY_POOL_CONTAINER"@"SEL$9" "CNTR_DAMAGE_DTL"@"SEL$12" "LOCN_GP_ACCESS_CTRL_GP_MEMBER"@"SEL$11")

                            USE_HASH(@"SEL$201A8568" "LOCN_GP_ACCESS_CTRL_GP_MEMBER"@"SEL$10")

                            USE_HASH(@"SEL$201A8568" "SHIPMENT"@"SEL$7")

                            USE_HASH(@"SEL$201A8568" "SHIPMENT_INSTRUCTION"@"SEL$8")

                            USE_HASH(@"SEL$201A8568" "RFR"@"SEL$1")

                            USE_HASH(@"SEL$201A8568" "LOCATION_SPACE"@"SEL$13")

                            USE_HASH(@"SEL$201A8568" "EMPTY_POOL_CONTAINER"@"SEL$9")

                            USE_HASH(@"SEL$201A8568" "CNTR_DAMAGE_DTL"@"SEL$12")

                            USE_HASH(@"SEL$201A8568" "LOCN_GP_ACCESS_CTRL_GP_MEMBER"@"SEL$11")

                            PX_JOIN_FILTER(@"SEL$201A8568" "LOCN_GP_ACCESS_CTRL_GP_MEMBER"@"SEL$11")

                            SWAP_JOIN_INPUTS(@"SEL$201A8568" "LOCN_GP_ACCESS_CTRL_GP_MEMBER"@"SEL$10")

                            SWAP_JOIN_INPUTS(@"SEL$201A8568" "SHIPMENT"@"SEL$7")

                            SWAP_JOIN_INPUTS(@"SEL$201A8568" "SHIPMENT_INSTRUCTION"@"SEL$8")

                            SWAP_JOIN_INPUTS(@"SEL$201A8568" "RFR"@"SEL$1")

                            SWAP_JOIN_INPUTS(@"SEL$201A8568" "LOCATION_SPACE"@"SEL$13")

                            SWAP_JOIN_INPUTS(@"SEL$201A8568" "EMPTY_POOL_CONTAINER"@"SEL$9")

                            SWAP_JOIN_INPUTS(@"SEL$201A8568" "CNTR_DAMAGE_DTL"@"SEL$12")

                            SWAP_JOIN_INPUTS(@"SEL$201A8568" "LOCN_GP_ACCESS_CTRL_GP_MEMBER"@"SEL$11")

                            NO_ACCESS(@"SEL$B584FDD1" "C"@"SEL$14")

                            FULL(@"SEL$B584FDD1" "REEFER_MONITORING_LOG"@"SEL$16")

                            LEADING(@"SEL$B584FDD1" "C"@"SEL$14" "REEFER_MONITORING_LOG"@"SEL$16")

                            USE_HASH(@"SEL$B584FDD1" "REEFER_MONITORING_LOG"@"SEL$16")

                            INDEX_FFS(@"SEL$E9CE8D49" "REEFER_MONITORING_LOG"@"SEL$19" ("REEFER_MONITORING_LOG"."REEFER_HANDLING_CYCLE_MODE"

                                    "REEFER_MONITORING_LOG"."CNTR_ID" "REEFER_MONITORING_LOG"."REEFER_MONITORING_DATETIME"))

                            USE_HASH_AGGREGATION(@"SEL$E9CE8D49")

                            INDEX_RS_ASC(@"SEL$335DD26A" "GATE_LOG"@"SEL$3" ("GATE_LOG"."CNTR_ID" "GATE_LOG"."CMS_NO"))

                            INDEX_RS_ASC(@"SEL$7286615E" "GATE_LOG"@"SEL$5" ("GATE_LOG"."CNTR_ID" "GATE_LOG"."CMS_NO"))

                            END_OUTLINE_DATA

                        */

CNTR.CREATED_BY_OPR_UNIT CREATED_BY_OPR_UNIT,

*********

from

*****.

无法收集统计信息,怎样优化SQL。的更多相关文章

  1. 收集统计信息让SQL走正确的执行计划

    数据库环境:SQL SERVER 2005 今天在生产库里抓到一条跑得慢的SQL,语句不是很复杂,返回的数据才有800多行, 却执行了34分钟,甚至更久. 先看一下执行结果 我贴一下SQL. SELE ...

  2. 使用DBMS_STATS来收集统计信息【转】

    overview Oracle's cost-based optimizer (COB) uses statistics to calculate the selectivity (the fract ...

  3. Oracle 手动收集统计信息

    收集oracle统计信息 优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN: 列统计: --列中唯一值的数量(NDV ...

  4. Oracle 判断 并 手动收集 统计信息 脚本

    CREATE OR REPLACE PROCEDURE SchameB.PRC_GATHER_STATS AUTHID CURRENT_USER IS BEGIN SYS.DBMS_STATS.GAT ...

  5. ORACLE收集统计信息

    1.     理解什么是统计信息 优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划.优化器统计信息包括: ·       ...

  6. ORACLE 收集统计信息

    1.     理解什么是统计信息优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划.优化器统计信息包括: ·        ...

  7. Oracle重建表索引及手工收集统计信息

    Oracle重建所有表的索引的sql: SELECT 'alter index ' || INDEX_NAME || ' rebuild online nologging;' FROM USER_IN ...

  8. Oracle 11g系统自己主动收集统计信息的一些知识

    在11g之前,当表的数据量改动超过总数据量的10%,就会晚上自己主动收集统计信息.怎样推断10%.之前的帖子有研究过:oracle自己主动统计信息的收集原理及实验.这个STALE_PERCENT=10 ...

  9. 验证Oracle收集统计信息参数granularity数据分析的力度

    最近在学习Oracle的统计信息这一块,收集统计信息的方法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, ---所有者名字 tabname ...

随机推荐

  1. 【http_load】http_load性能测试工具使用详解

    1.什么是http_loadhttp_load是一款基于Linux平台的web服务器性能测试工具,用于测试web服务器的吞吐量与负载,web页面的性能. 2.http_load的安装1)下载地址wge ...

  2. POJ 3276 Face The Right Way【枚举】

    题意: N头牛站成一条线,分别朝向前后两个方向,机器可以使连续K头牛同时改变方向,要求所有牛最终朝向前方,问机器操作次数的最小值及此时的最小K值. 分析: 第一眼看感觉是二分搜索K,再仔细读题, pl ...

  3. BZOJ——2190: [SDOI2008]仪仗队

    思路: 我们将其所在的位置设为(0,0),那么如果存在一个点(x,y),且有gcd(x,y)=k(k!=1),那么点(x/k,y/k)一定会将(x,y)挡住.而如果k=1,那么点(x,y)就一定会被看 ...

  4. Path Sum(参考别人,二叉树DFS)

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  5. Ubuntu 16.04开机自动挂载硬盘分区(转)

    说明:如果挂载以前旧硬盘分区时不需要第2.3步! 1.查看Linux硬盘信息: sudo fdisk -l 2.格式化新硬盘(很危险,注意操作时确定硬盘分区的位置): sudo mkfs.ext4 / ...

  6. Redis基于客户端分片的集群案例(待实践)

    说明: 下面的示例基本都是基于Linux去实现,目的是为了环境的统一,以便于把性能调整到最优.且基于Java.建议生产环境不要使用Windows/Mac OS这些. 在Java领域,基于客户端进行分片 ...

  7. easyui north 穿透

    穿透layout的north 原理 穿透下面的层只要使该层的position置于fix即可 如果该层还有下一级,则下一层级的position置于absolute即可 示例代码 #menu.active ...

  8. cocos2d-x CCScrollView和CCTableView的使用

    在游戏和应用中常常要实现左右滑动展示游戏帮助.以列表显示内容的UI效果,就像android中的Gallery和ListView. 本文通过CCScrollView和CCTableView分别来实现这两 ...

  9. 解决fragmentTransaction.replace不能全屏

    今天遇到个问题,使用fragmentTransaction.replace替换后的内容不能全屏.. FragmentManager fragmentManager = getSupportFragme ...

  10. NYOJ 55 懒省事的小明(哈弗曼树)

    懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述       小明非常想吃果子,正好果园果子熟了. 在果园里,小明已经将全部的果子打了下来,并且按果子的不 ...