Oracle 分区表的统计信息实例
ORACLE的统计信息在执行SQL的过程中扮演着非常重要的作用,而且ORACLE在表的各个层次都会有不同的统计信息,通过这些统计信息来描述表的,列的各种各样的统计信息。下面通过一个复合分区表来说明一些常见的和不常见的统计信息。
搭建测试用例
--创建表。
SQL>
create table test
partition by range(object_id)
subpartition by hash(object_type) subpartitions 4
(partition p1 values less than(10000),
partition p2 values less than(20000),
partition p3 values less than(30000),
partition p4 values less than(maxvalue))
as
select * from dba_objects; --收集统计信息
sql>
BEGIN
dbms_stats.gather_table_stats( ownname => 'NC60',
tabname => 'TEST',
estimate_percent => 100, --百分之百采样
block_sample => FALSE,
method_opt => 'FOR ALL COLUMNS SIZE 10', --收集直方图
granularity => 'ALL', --所有分区
cascade => TRUE --收集索引
);
END;
1,表级的统计信息
SQL> select table_name,num_rows,blocks,empty_blocks,avg_space
2 from user_tables
3 where table_name = 'TEST'; TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE
------------------------------ ---------- ---------- ------------ ----------
TEST 87556 1328 0 0
2,表上列的统计信息
SQL> select table_name,column_name,num_distinct,density
2 from user_tab_columns
3 where table_name = 'TEST'; TABLE_NAME COLUMN_NAME NUM_DISTINCT DENSITY
------------------------------ ------------------------------ ------------ ----------
TEST OWNER 34 .023504483
TEST OBJECT_NAME 57495 .000020431
TEST SUBOBJECT_NAME 163 .007094837
TEST OBJECT_ID 87556 .000011421
TEST DATA_OBJECT_ID 22685 .000044786
TEST OBJECT_TYPE 45 .086650298
TEST CREATED 2057 .000847961
TEST LAST_DDL_TIME 1898 .000919514
TEST TIMESTAMP 2182 .000838526
TEST STATUS 1 5.7106E-06
TEST TEMPORARY 2 5.7106E-06 TABLE_NAME COLUMN_NAME NUM_DISTINCT DENSITY
------------------------------ ------------------------------ ------------ ----------
TEST GENERATED 2 5.7106E-06
TEST SECONDARY 2 5.7106E-06
TEST NAMESPACE 21 .116972867
TEST EDITION_NAME 0 0
3,表上列的直方图信息(OBJECT_ID列)
SQL> col TABLE_NAME format a20
SQL> col COLUMN_NAME format a40
SQL> select table_name,column_name,endpoint_number,endpoint_value
2 from user_tab_histograms
3 where table_name = 'TEST'
4 and column_name = 'OBJECT_ID'; TABLE_NAME COLUMN_NAME ENDPOINT_NUMBER ENDPOINT_VALUE
-------------------- ---------------------------------------- --------------- --------------
TEST OBJECT_ID 0 2
TEST OBJECT_ID 1 8921
TEST OBJECT_ID 2 17998
TEST OBJECT_ID 3 26754
TEST OBJECT_ID 4 35510
TEST OBJECT_ID 5 44266
TEST OBJECT_ID 6 53025
TEST OBJECT_ID 7 62172
TEST OBJECT_ID 8 71290
TEST OBJECT_ID 9 82232
TEST OBJECT_ID 10 91577
4,分区的统计信息
SQL> select partition_name,num_rows,blocks,empty_blocks,avg_space
2 from user_tab_partitions
3 where table_name = 'TEST'; PARTITION_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE
------------------------------ ---------- ---------- ------------ ----------
P1 9708 147 0 0
P2 9805 162 0 0
P3 10000 156 0 0
P4 58043 863 0 0
5,分区上列的统计信息
SQL> select column_name,num_distinct,density,num_nulls
2 from user_part_col_statistics
3 where table_name = 'TEST'
4 and partition_name = 'P1'; COLUMN_NAME NUM_DISTINCT DENSITY NUM_NULLS
---------------------------------------- ------------ ---------- ----------
OWNER 5 .000051504 0
OBJECT_NAME 7878 .000142267 0
SUBOBJECT_NAME 25 .00877193 9594
OBJECT_ID 9708 .000103008 0
DATA_OBJECT_ID 2074 .000560776 7597
OBJECT_TYPE 20 .080003882 0
CREATED 141 .011559584 0
LAST_DDL_TIME 213 .010730067 0
TIMESTAMP 182 .011371733 0
STATUS 1 .000051504 0
TEMPORARY 2 .000051504 0 COLUMN_NAME NUM_DISTINCT DENSITY NUM_NULLS
---------------------------------------- ------------ ---------- ----------
GENERATED 2 .000051504 0
SECONDARY 1 .000051504 0
NAMESPACE 8 .000051504 0
EDITION_NAME 0 0 9708
6,分区上列的直方图信息(OBJECT_ID列)
SQL> select column_name,bucket_number,endpoint_value
2 from user_part_histograms
3 where table_name = 'TEST'
4 and partition_name = 'P1'
5 and column_name = 'OBJECT_ID'; COLUMN_NAME BUCKET_NUMBER ENDPOINT_VALUE
---------------------------------------- ------------- --------------
OBJECT_ID 0 2
OBJECT_ID 1 1030
OBJECT_ID 2 2010
OBJECT_ID 3 2981
OBJECT_ID 4 3952
OBJECT_ID 5 4923
OBJECT_ID 6 5928
OBJECT_ID 7 6953
OBJECT_ID 8 7933
OBJECT_ID 9 8903
OBJECT_ID 10 9999 11 rows selected.
7,子分区的统计信息
SQL> select subpartition_name,num_rows,blocks,empty_blocks
2 from user_tab_subpartitions
3 where table_name = 'TEST'
4 and partition_name = 'P1'; SUBPARTITION_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS
------------------------------ ---------- ---------- ------------
SYS_SUBP21 3314 48 0
SYS_SUBP22 3824 57 0
SYS_SUBP23 528 11 0
SYS_SUBP24 2042 31 0 SQL>
8,子分区上的列的统计信息
SQL> select column_name,num_distinct,density
2 from user_subpart_col_statistics
3 where table_name = 'TEST'
4 and subpartition_name = 'SYS_SUBP21'; COLUMN_NAME NUM_DISTINCT DENSITY
---------------------------------------- ------------ ----------
OWNER 3 .000150875
OBJECT_NAME 3314 .00030175
SUBOBJECT_NAME 1 .009615385
OBJECT_ID 3314 .00030175
DATA_OBJECT_ID 178 .005617978
OBJECT_TYPE 7 .000150875
CREATED 126 .017527186
LAST_DDL_TIME 148 .01653325
TIMESTAMP 134 .017483116
STATUS 1 .000150875
TEMPORARY 2 .000150875 COLUMN_NAME NUM_DISTINCT DENSITY
---------------------------------------- ------------ ----------
GENERATED 2 .000150875
SECONDARY 1 .000150875
NAMESPACE 5 .000150875
EDITION_NAME 0 0
9,子分区上的列的直方图信息
SQL> select column_name,bucket_number,endpoint_value
2 from user_subpart_histograms
3 where table_name = 'TEST'
4 and subpartition_name = 'SYS_SUBP21'
5 and column_name = 'OBJECT_ID'; COLUMN_NAME BUCKET_NUMBER ENDPOINT_VALUE
---------------------------------------- ------------- --------------
OBJECT_ID 0 100
OBJECT_ID 1 1764
OBJECT_ID 2 2429
OBJECT_ID 3 3088
OBJECT_ID 4 3752
OBJECT_ID 5 4309
OBJECT_ID 6 4640
OBJECT_ID 7 5828
OBJECT_ID 8 7278
OBJECT_ID 9 8912
OBJECT_ID 10 9998
我们对这个复合分区分析之后产生了上面这九种不同层次的统计信息。CBO想要得要一个高效的执行计划需要如此多的统计信息
Oracle 分区表的统计信息实例的更多相关文章
- Oracle 分区表 收集统计信息 参数granularity
GRANULARITY Determines the granularity of statistics to collect. This value is only relevant for par ...
- oracle里的统计信息
1 oracle里的统计信息 Oracle的统计信息是这样的一组数据,存储在数据字典,从多个维度描述了oracle数据库对象的详细信息,有6种类型 表的统计信息:记录数.表块的数量.平均行长度等 索引 ...
- Oracle性能优化之Oracle里的统计信息
一.什么是统计信息 oracle数据库里的统计信息是如下的一组数据:他们存储在数据字典里,且从多个维度描述了oracle数据库数据对象的详细信息. oracle数据库里的统计信息主要分为以下6种情况: ...
- 基于Oracle的SQL优化(崔华著)-整理笔记-第5章“Oracle里的统计信息”
第5章“Oracle里的统计信息” 详细介绍了Oracle数据库里与统计信息相关的各个方面的内容,包括 Oracle数据库中各种统计信息的分类.含义.收集和查看方法,以及如何在Oracle数据库里正确 ...
- Oracle中的统计信息
一.什么是统计信息 统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息.例如,表的行数,块数,平均每行的大小,索引的leaf blocks,索引字段的行数,不同值的大小等,都属于 ...
- Oracle的自动统计信息不收集直方图的信息
Oracle的自动统计信息不收集直方图的信息 在oracle9i中,默认的统计信息收集是不收集直方图信息的,也就是说默认的MOTHOD_OPT模式为FOR ALL COLUMNS SIZE 1 在10 ...
- Oracle之自动收集统计信息
一.Oracle 11g 在Oracle的11g版本中提供了统计数据自动收集的功能.在部署安装11g Oracle软件过程中,其中有一个步骤便是提示是否启动这个功能(默认是启用这个功能). 在这里介绍 ...
- 关于Oracle开启自动收集统计信息的SPA测试
主题:关于Oracle开启自动收集统计信息的SPA测试 环境:Oracle RAC 11.2.0.4(Primary + Standby) 需求:生产Primary库由于历史原因关闭了自动统计信息的收 ...
- Oracle重新获取统计信息以及SQLSERVER重建索引
Oracle重新获取统计信息 exec dbms_stats.gather_schema_stats(ownname =>'LCoe739999',options => 'GATHER', ...
随机推荐
- 高可用HA,高性能
天天开发,免不了听一些技术论坛,都是专业的词汇,没听过就很陌生,记录一下. ======================================================== 高可用: ...
- HTTP 500 的解决方案
我们首先要确定IIS权限的问题,如下所示: 身份验证的具体项: 身份验证的基本设置: 注意:如果不需要Form验证的情况下,那么把Form身份验证禁止掉,否则会出现在每一次请求的过程中都要有一个默认的 ...
- NEERC 2013, Eastern subregional contest
I. The old Padawan Time limit: 0.5 secondMemory limit: 64 MB Yoda: Use the Force. Yes. Now, the ston ...
- Python计算程序运行时间
方法1 import datetime starttime = datetime.datetime.now() #long running endtime = datetime.datetime.no ...
- body-content取值的意义
body-content的值有下面4种: <xsd:enumeration value="tagdependent"/> <xsd:enumeration val ...
- sc delete 服务器名提示“指定的服务已经标记为删除”
症状:停止服务后,右键无法点击“启动”,打开命令输入SC删除服务后提示如标题描述 原因:进程还在 解决方案:打开任务管理器,进程,找到你的已停止服务名,右键,结束进程,再操作即可删除服务
- Nodejs笔记(二)
Nodejs事件 Node.js 所有的异步I/O 操作在完成时都会发送一个事件到事件队列. Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一 ...
- qq 登录 cordova插件
1.下载open-sdk.jar文件和mta_sdk_x.x.x.jar文件拷贝到libs(或lib)目录下这个链接 很容易的把环境配置好http://wiki.connect.qq.com/%E5% ...
- 详解H264视频格式-2016.01.28
专业名词解释 VCL(Video Coding Layer)视频编码层 NAL(Network Abstraction Layer)网络提取层 SPS(Sequence Parameter Set) ...
- 全选Form > Grid 的所有行
在AX的Grid 按Ctrl+A,并不一定能选择到grid 的所有行,比如你要将当前grid的数据复制到Excel,你需要全部选择所有行. 但AX自身的数据缓存机制,数据量非常大的时候当前grid只装 ...