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就不再增加了。比较奇怪!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐