组合分区表创建索引之后最好收集索引的统计信息
来源:互联网 发布:netfits云墙 mac 编辑:程序博客网 时间:2024/05/21 15:45
本实验基于Oracle10g
先建立一个组合分区表
create table t_sub(id number, data varchar2(20))
partition by range(id)subpartition by hash(data)
(partition p1 values less than (100)
(subpartition p1_s_1,
subpartition p1_s_2
),
partition p2 values less than (maxvalue)
(subpartition p2_s_1,
subpartition p2_s_2
)
);
插入数据
BEGIN
FOR i in 1..200 loop
insert into t_sub values(i,i||'A');
end loop;
END;
SQL> create index i_id on t_sub(id) local nologging;
Index created
SQL> select a.index_name,
2 decode(partitioned,'YES',b.partition_name,'NO')
3 partition,b.subpartition_name subpartition_name,b.num_rows,
4 b.distinct_keys,b.num_rows/b.distinct_keys
5 avg_row_per_key,b.distinct_keys/b.num_rows SELECTIVITY,
6 b.clustering_factor from dba_indexes
7 a,dba_ind_statistics b where a.owner=b.owner
8 and a.index_name=b.index_name and a.owner='&owner' and
9 a.index_name='&index_name';
INDEX_NAME PARTITION SUBPARTITI NUM_ROWS DISTINCT_KEYS AVG_ROW_PER_KEY SELECTIVITY CLUSTERING_FACTOR
---------- ---------- ---------- ---------- ------------- --------------- ----------- -----------------
I_ID P2 P2_S_2 58 58 1 1 1
I_ID P2 P2_S_1 43 43 1 1 1
I_ID P1 P1_S_2 44 44 1 1 1
I_ID P1 P1_S_1 55 55 1 1 1
I_ID P2 101 581.7413793103448 0.574257425 2
I_ID P1 99 55 1.8 0.555555555 2
I_ID 200 58 3.4482758620689 0.29 4
7 rows selected
我们都知道,创建索引的时候会自动收集统计信息,以前创建索引如果要收集统计信息还需要加上compute statistics,不过现在不需要了,已经默认会收集。从查询看出,子分区的统计信息 是准确的, 不过分区,以及全局的统计信息 是不准确 的。
注意看 distinct_keys。我插入的数据都没有重复的,不过Oracle却统计出有重复数据。
好了现在我收集统计信息
SQL> BEGIN
2 DBMS_STATS.GATHER_TABLE_STATS(ownname => 'ROBINSON',
3 tabname => 'T_SUB',
4 estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
5 method_opt => 'for all columns size repeat',
6 degree => DBMS_STATS.AUTO_DEGREE,
7 granularity => 'ALL',
8 cascade=>TRUE
9 );
10 END;
11 /
PL/SQL procedure successfully completed
再次查询 统计信息
SQL> select a.index_name,
2 decode(partitioned,'YES',b.partition_name,'NO')
3 partition,b.subpartition_name subpartition_name,b.num_rows,
4 b.distinct_keys,b.num_rows/b.distinct_keys
5 avg_row_per_key,b.distinct_keys/b.num_rows SELECTIVITY,
6 b.clustering_factor from dba_indexes
7 a,dba_ind_statistics b where a.owner=b.owner
8 and a.index_name=b.index_name and a.owner='&owner' and
9 a.index_name='&index_name';
INDEX_NAME PARTITION SUBPARTITI NUM_ROWS DISTINCT_KEYS AVG_ROW_PER_KEY SELECTIVITY CLUSTERING_FACTOR
---------- ---------- ---------- ---------- ------------- --------------- ----------- -----------------
I_ID P2 P2_S_2 58 58 1 1 1
I_ID P2 P2_S_1 43 43 1 1 1
I_ID P1 P1_S_2 44 44 1 1 1
I_ID P1 P1_S_1 55 55 1 1 1
I_ID P2 101 101 1 1 2
I_ID P1 99 99 1 1 2
I_ID 200 200 1 1 4
7 rows selected
现在准确了。
- 组合分区表创建索引之后最好收集索引的统计信息
- Oracle收集索引统计信息
- oracle表不走索引,收集一下表的统计信息
- 收集统计信息导致索引被监控
- Oracle收集统计信息和重建索引
- 收集对象统计信息【表、列、索引】
- 分区表及分区索引(5)--创建range-hash组合分区
- 分区表及分区索引(6)--创建range-list组合分区
- 创建分区索引时统计信息的准确性问题
- 对分区表创建本地索引的问题
- Oracle分区表创建本地索引和局部索引的性能
- 创建查询分区表和索引
- postgresql 定时收集表和索引统计信息
- 数据库索引统计信息
- 错误的索引统计信息导致oracle expdp导500多G的大分区表时hang住
- DB2分区表创建及分区索引的创建
- mysql创建组合索引
- 索引碎片统计信息的解释
- fork的总结
- 编程珠玑之第三章习题3
- 大佬起床哪家早?库克每天4点半起床发邮件
- 查找算法总结备忘
- UDP协议/套接字
- 组合分区表创建索引之后最好收集索引的统计信息
- 多线程——创建新线程
- struts2和spring整合时,报异常
- Ubuntu安装nodeJS
- Discuz3.2 1225升级之后无法登陆UC的解决方案
- 2015:小米与反小米者的决战之年
- Java EE----struts2开发入门
- vi保存和退出
- Ruby自学该怎么看书?