oracle收集分区表统计信息,分区表应该怎么收集统计信息
SELECT INDEX_NAME "NAME", NUM_ROWS, DISTINCT_KEYS "DISTINCT",LEAF_BLOCKS, CLUSTERING_FACTOR "CF", BLEVEL "LEVEL",sample_size,LAST_ANALYZED,AVG_LEAF_BLOCKS_PER_KEY "ALFBPKEY"FROM DBA_INDEXESWHERE OWNER
SELECT INDEX_NAME "NAME", NUM_ROWS, DISTINCT_KEYS "DISTINCT",
LEAF_BLOCKS, CLUSTERING_FACTOR "CF", BLEVEL "LEVEL",sample_size,LAST_ANALYZED,
AVG_LEAF_BLOCKS_PER_KEY "ALFBPKEY"
FROM DBA_INDEXES
WHERE OWNER = 'USER1' AND TABLE_NAME IN ('TB_1')
ORDER BY TABLE_NAME,INDEX_NAME;
SELECT INDEX_NAME "NAME", NUM_ROWS, DISTINCT_KEYS "DISTINCT",
LEAF_BLOCKS, CLUSTERING_FACTOR "CF", BLEVEL "LEVEL",sample_size,LAST_ANALYZED,
AVG_LEAF_BLOCKS_PER_KEY "ALFBPKEY"
FROM dba_ind_partitions
WHERE INDEX_OWNER = 'USER_1'
ORDER BY INDEX_NAME;
我之前查的sample_size是从这两个表出来的,都不正确。
distinct_keys的正确数值我是这样查的:
select count(*) from (select distinct index_col1 from tb_1 where index_col1 is not null)
表结构简单的如下:
QL> desc tb_1
Name Type Nullable Default Comments
------------------- ------------ -------- ------- --------
ID NUMBER(11)
A NUMBER(11) 0
B NUMBER(11) Y
C NUMBER(11) Y c上有索引,统计数据正确
D NUMBER(11) Y d上有索引,统计数据正确
E NUMBER(20) Y
index_col1 DATE sysdate 分区字段,本地索引,统计数据不正确
index_col2 DATE sysdate 有全局索引,统计数据不正确
。。。
表有1000多万数据,统计数据正确的字段distinct_keys数值比较少,几千个。不正确的字段distinct_keys的正确数值比较大,但出来的结果就比较小。
查dba_ind_partitions,发现分区里面数据比较少的,sample_size就是100%,数据量一多,sample_size就不再增加了。比较奇怪!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)