Analyze使用场景

之前很多次都说到,对表的索引等信息进行了增删改之后,需要对表进行analyze更新统计信息,才能使数据库做出最好的执行计划,没有注意到,即使是一张很小的空表,如果进行了字段的增删改,也需要进行analyze,否则,执行计划也会出错。

实际使用中,在给T1(新建宽表,频繁更新字段中,但是数据量不大)使用merge进行单列更新时,发现select部分其实执行的很快,但是merge的时候执行效率极差,没有办法更新,尝试给select部分使用parallel并行操作,可以得到结果。后来,对T1表进行analyze之后,可以很好的实现结果。所以,极有可能是是因为T1表进行的字段的增删改而导致统计信息没有及时更新而导致这种结果。

Merge into t T1
using (select '' as a, 2 as b from dual) T2
on (T1.a = T2.a)
when matched then
update set T1.b = T2.b;

所以即使是一张空表,如果对字段进行了增删改,即使merge字段很少时,也需要对表进行analyze。也就是说当前表的查询或其他性能不好时,都可以对相应的表进行一次分析。

Analyze概述

1. 要是CBO发挥最大的作用,就必须对对象进行分析。Oracle根据结果取cost最小的方案执行SQL。

2. 数据库的分析可以通过analyze对表执行,也可以通过DBMS_DDL、DBMS_UTILITY、DBMS_STATS(没有用过)等包批量分析某个用户或者整个数据库。

3. 命令truncate不会修改数据的统计信息.

4. 可以对数据库的所有表每日特定时间进行分析,特殊情况下才手动analyze。

5. 一般使用①对表进行分析即可.

--① 分析表的所有字段,所有索引,所有索引字段。其中:① = ②
analyze table student compute statistics;
--② 分析表的所有字段,所有索引,所有索引字段。其中:① = ②
analyze table student compute statistics for table for all indexes for all columns;
--③ 只分析所有有索引的字段
analyze table student compute statistics for table for all indexes for all indexed columns; --④ 抽样估算法
analyze table student estimate statistics sample 20 percent; --⑤ 删除分析数据
analyze table student delete statistics;
analyze table student delete statistics for table for all indexes for all indexed columns; --查看表的统计信息
select table_name,num_rows,blocks,empty_blocks from user_tables where table_name='student';

Oracle Analyze的更多相关文章

  1. 对于Oracle analyze table的使用总结 . 对于Oracle analyze table的使用总结 .

    对于Oracle analyze table的使用总结 . 对于Oracle analyze table的使用总结 . analyze table 一般可以指定分析: 表,所有字段,所有索引字段,所有 ...

  2. Oracle Analyze 命令 详解

    官网的链接如下: http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_4005.htm#SQLRF01105 使用DBMS ...

  3. [转] Oracle analyze table 使用总结

    转自:http://www.cnblogs.com/einyboy/archive/2012/08/09/2630321.html analyze table 一般可以指定分析: 表,所有字段,所有索 ...

  4. [转] Oracle analyze 命令分析

    转自:http://blog.sina.com.cn/s/blog_682841ba0101bncp.html 1.analyze table t1 compute statistics for ta ...

  5. ORACLE ANALYZE使用小结

      ANALYZE的介绍     使用ANALYZE可以收集或删除对象的统计信息.验证对象的结构.标识表或cluster中的行迁移/行链接信息等.官方文档关于ANALYZE功能介绍如下: ·      ...

  6. oracle_fdw安装及使用(无法访问oracle存储过程等对象)

    通过oracle_fdw可以访问oracle中的一些表和视图,也可以进行修改,尤其是给比较复杂的系统使用非常方便. (但不能使用oracle_fdw来访问oracle的存储过程.包.函数.序列等对象) ...

  7. Oracle索引梳理系列(十)- 直方图使用技巧及analyze table操作对直方图统计的影响(谨慎使用)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  8. Oracle数据库使用Analyze提升sql性能

    Oracle数据库使用Analyze提升sql性能 如果你不使用analyze完成sql优化,将意味着:你拒绝使用数据库的查询优化器,也失去了使用优化连接的机会.假设你创建了一张拥有100万条记录的临 ...

  9. ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

随机推荐

  1. python基本数据类型练习

    一.元素分类# 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中.# 即 ...

  2. angular双向绑定与单向绑定的写法区别

    [ngModel]="manualCode" (ngModelChange)="manualCode=$event;" 等价于下面这样的写法: [(ngMode ...

  3. HDU 6447 YJJ’s Salesman (树状数组 + DP + 离散)

    题意: 二维平面上N个点,从(0,0)出发到(1e9,1e9),每次只能往右,上,右上三个方向移动, 该N个点只有从它的左下方格点可达,此时可获得收益.求该过程最大收益. 分析:我们很容易就可以想到用 ...

  4. VS文档自动生成

    VS2008文档自动生成 (发现,Sandcastle主要是用于C#项目.里面的注释都是XML格式的.不太适合VC的.最终还是得用Doxygen) 一.Sandcastle简介: Sandcastle ...

  5. 牛客网Java刷题知识点之基本数据类型参数传递和引用数据类型参数传递图解

    不多说,直接上干货! //基本数据类型参数传递 class Demo { public static void main(String[] args) { ; show(x); System.out. ...

  6. C#面试常见题

    1. 简述 private. protected. public. internal 修饰符的访问权限. 答: private : 私有成员, 在类的内部才可以访问. protected : 保护成员 ...

  7. 微信退款和支付宝退款接口调用(java版)

    项目中需要使用到微信和支付宝的退款功能,在这两天研究了一下这两个平台的退款,有很多坑,在开发中需要留意 1.微信退款接口 相对来说我感觉微信的退款接口还是比较好调用的,直接发送httppost请求即可 ...

  8. C#语言使用习惯

    1.使用属性而不是可访问的数据成员 2.用运行时常量(readonly)而不是编译期常量(const) 编译期常量与运行时常量行为的不同之处在于对他们的访问方式不同,编译期常量的值是在目标代码中进行替 ...

  9. 《C#高效编程》读书笔记10-使用可选参数减少方法重载数量

    C#现在支持调用者一方使用具名参数(named parameter).类型中的名称也成为了公有接口的一部分.修改公有参数名称将有可能破坏掉调用者的代码. public void SetName(str ...

  10. FormsAuthentication IsAuthenticated一直为false

    解决办法: 在Web.Config中添加一下红框的内容