analyze table tablename compute statistics;
analyze index indexname compute statistics;

对于使用CBO很有好处,可以使用更可靠的table信息,从而执行计划也可以更准确一些,在10g会自动analyze,之前的版本需要手动定期

生成统计信息,,选择合理的执行计划..

一、     表分析概念

1.  简单的说,就是收集表和索引的信息,CBO根据这些信息决定SQL最佳的执行路径。通过对表的分析,可以产生一些统计信息,通过这些信息oracle的优化程序可以优化。

1)     收集统计信息的目的是为了使基于 CBO的执行计划更加准确。

2)     分析的结果数据[all_tables]有什么用,要看Oracle初始化参数 optimal_mode 怎么设置的。

3)     分析更新表的统计信息,,有可能导致执行计划改变

2.  用analyze或dbms_stats包做统计表的的分析,分析可以判断表的使用情况,比如行迁移情况、表的资料量情况等,如:

1)     select * from all_tables where table_name='TEMP_TABLE';(表名一定要大写)

如果对该表没有做过统计分析,则查询的大部分栏位值都为空

2)     analyze table tableName compute statistics;

执行时间与表的数据量有关

3)     select * from all_tables where table_name=' TEMP_TABLE ';

之前为空的部分字段,现在查询已经有值

3.  oracle的联机文档描述了analyze的做用:

Use the ANALYZE statement to collect non-optimizer statistics, for example, to:

--使用analyze功能可以收集一些没有进行优化的统计信息,例如:

Collect or delete statistics about an index or index partition, table or table partition,

--聚集或删除索引或索引分区,表或表分区

index-organized table, cluster, or scalar object attribute.

--索引表,串,或游标的目标属性等统计信息

Validate the structure of an index or index partition, table or table partition, index-organized table,

--增加下列结构的有效性:索引或索引分区,表或表分区,索引表

cluster, or object reference (REF).

--串,目标参照

Identify migrated and chained rows of a table or cluster.

--鉴别一个表或串中已经被移动的抑或被锁住的列。

4.  dbms_stats包的作用主要是替代analyze的收集统计信息这一块的功能,且在这一方面做了相当大程度上的增强。

5.  带有ESTIMATE选项的ANALYZE操作对于一 些表能够产生不正确的结果,尤其是那些取样较小的表。这不是个BUG,而是每个统计取样方法的特性。如果所选取样不能代表整个数据集,你就不能期 待产生正确的统计。

6.  统计分析,在Oracle 10G中能够保存列值的分布信息

7. 在考虑表分析时,需要考虑如下问题:

1)     对一个带索引的表的ANALYZE,将分析其相关索引。

2)     如果你对一个表进行ANALYZE ... ESTIMATE 分析,那么然后在其相关索引上做ANALYZE COMPUTE分析是很明智的。这样可以确保被索引字段的统计是准确的。

3)     分析索引不用到临时表空间

4)     如果分析一个索引而不分析其基表,在这一单一基础上CBO不会被选中如果你需要使用ESTIMATE- 估计(例如,由于时间的限制),建议你在几个不同的取样大小上进行 ANALYZE ... ESTIMATE, 来 确定每个对象的理想的取样大小。总的目标是找到一个能在最短的时间内产生准确的统计的取样大小。较好的开始点是 10% - 15%

5)     进行超过50%的ANALYZE ... ESTIMATE 就会导致/变成ANALYZE ... COMPUTE。

oracle表分析的更多相关文章

  1. Oracle 表分析

    ANALYZE TABLE SeikyuTbl COMPUTE Statistics FOR TABLE FOR ALL COLUMNS FOR ALL INDEXES ; 一.优化器的优化方式 Or ...

  2. oracle表分区、表分析及oracle数据泵文件导入导出开心版

    1.先说oracle表分区是什么吧,这样吧我们来举个桃子,栗子太小,我们就不举了,我们来举个桃子. 你有500万份文件,你要把他存在磁盘上,好嘛,我们就一个文件夹,500万分文件在那儿杵着,我们想找到 ...

  3. oracle表分区、表分析及oracle数据泵文件导入导出

    1.先说oracle表分区是什么吧 你有500万份文件,你要把他存在磁盘上,好嘛,我们就一个文件夹,500万分文件在那儿杵着,我们想找到要的那个打开,嘿嘿,我们得找到什么时候. 这时候,有个人告诉你, ...

  4. Oracle表空间管理

    oracle表空间相关常用命令小结: 1.ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE;              //修改表空间数据文件类型 2.ALT ...

  5. oracle表分区的,分区操作,分区查询,子分区查询

    一.摘要 有关表分区的一些维护性操作: 注:分区根据具体情况选择. 表分区有以下优点: 1.数据查询:数据被存储到多个文件上,减少了I/O负载,查询速度提高. 2.数据修剪:保存历史数据非常的理想. ...

  6. 45.oracle表类型、数据拆分、表分区

    不要做一些没有意义的事情,就比如说你要离职并不打算吃回头草,离职理由中完全没有必要说明“领导的水平太渣,人品太差”此类的原因,而是“个人原因”,当然实在不批准辞职另说. oracle表类型 表的类型分 ...

  7. 打开关闭oracle自动表分析

      oracle 表的统计信息,跟他的执行计划很有关联 执行计划的正常是否,跟SQL的执行速度很有关系 首先讲解一下如何查看一个数据库的是否开启自动统计分析 1.查看参数:STATISTICS_LEV ...

  8. oracle 表空间tablespace

    一.Oracle 表空间的组成 Everoone knows Oracle数据库真正存放数据的是数据文件,Oracle表空间是逻辑上的概念,他在物理上是并不存在的,把多个DataFile合并到一起就是 ...

  9. Oracle logminer 分析redo log(TOAD与PLSQL)

    Oracle logminer 分析redo log Oracle 11g r2 RAC centos 6.5 设置时间格式 select to_char(sysdate,'yyyy-mm-dd hh ...

随机推荐

  1. 为什么要在<button>元素中添加type属性

    在HTML中<button> 标签定义一个按钮. <button type="button">Click Me!</button> 在 butt ...

  2. 1059: [ZJOI2007]矩阵游戏 - BZOJ

    Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两 ...

  3. iOS 屏幕旋转 nav+tabbar+present(网页) 2016

    如题,最近一个app架构为 nav + tabbar ,需求是 在点击tabbar中的一个菜单项时,弹出网页,该网页需要横屏显示,其他页面不变  都保持竖屏. XCode Version 7.2.1 ...

  4. redhat_suse双系统引导

    先装suse11系统,再装redhat6后出现引导中suse系统无法启动解决方法:在redhat中将suse所在分区挂载出来,找其boot/grub/menu.lst下的启动项,将该启动项复制到red ...

  5. Samza文档翻译 : Concepts

    此页介绍啊Samza的一些高层级概念. Streams Samza处理Streams(流).流由同一类型的不可变的消息组成.例如,一个流可以是对一个网站的所有点击,或者对一个数据库表的所有更新,或者一 ...

  6. Python SyntaxError: Non-ASCII character '\xe5'

    error: SyntaxError: Non-ASCII character '\xe5' in file D:\worklife\workshop\myCrawler\src\mainDriver ...

  7. Interface Serializable

    public interface Serializable Serializability of a class is enabled by the class implementing the ja ...

  8. C#字符串的常用操作

    一.string关键字与StringBuilder类 C# 字符串是使用 string 关键字声明的一个字符数组.字符串是使用引号声明的,如下例所示: string s = "Hello, ...

  9. POJ2253——Frogger(Floyd变形)

    Frogger DescriptionFreddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fi ...

  10. Rabbitmq中rabbitmqctl的常用命令

    学习rabbitmq,原理之后第一个要掌握的就是rabbitmqctl这个命令的用法了,rabbitmq的管理功能最全的就是rabbitmqctl命令了,当然还有HTTP API和UI两种管理手段. ...