索引的统计信息收集
- GATHER_INDEX_STATS
- index_stats_show
根据模式名,索引名获得该索引的统计信息。用于经过 GATHER_TABLE_STATS、GATHER_INDEX_STATS 或 GATHER_SCHEMA_STATS 收集之后展示。返回两个结果集:一个是索引的统计信息;另一个是直方图的统计信息。
create table b1 (id int);insert into b1(id) values(1);insert into b1(id) values(11);insert into b1(id) values(111);insert into b1(id) values(1111);create unique index b1_index on b1(id);dbms_stats.GATHER_INDEX_STATS('SYSDBA','B1_INDEX');
dbms_stats.index_stats_show('SYSDBA','B1_INDEX');
索引对应列不满,存在null值时求行数
create table b2(a int,b int,c int);
insert into b2(a,b,c) values(1,1,1);insert into b2(b,c) values(2,2);
insert into b2(a,b,c) values(3,3,3);
select * from b2;create unique index b2_index on b2(a);
dbms_stats.GATHER_INDEX_STATS('SYSDBA','B2_INDEX');dbms_stats.index_stats_show('SYSDBA','B2_INDEX');
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eyIc7dGD-1692083999256)(C:\Users\SU\AppData\Roaming\Typora\typora-user-images\image-20230815101619351.png)]](https://img-blog.csdnimg.cn/1203ad12b45248b58ff3988b275d4034.png)
可以发现统计信息中的行数,与索引对应的列行数无关。
索引对应多个列时,求行数
insert into b2(c) values(4);
create index b2_index2 on b2(a,b);
dbms_stats.GATHER_INDEX_STATS('SYSDBA','B2_INDEX2');dbms_stats.index_stats_show('SYSDBA','B2_INDEX2');

可以发现统计信息中的行数,与索引对应的列行数无关。
列的统计信息收集
- GATHER_TABLE_STATS
- columns_stats_show
根据模式名,表名和列名获得该列的统计信息。用于经过 GATHER_TABLE_STATS、GATHER_INDEX_STATS 或 GATHER_SCHEMA_STATS 收集之后展示。返回两个结果集:一个是列的统计信息;另一个是直方图的统计信息。
dbms_stats.GATHER_TABLE_STATS('SYSDBA','B2');dbms_stats.COLUMN_stats_show('SYSDBA','B2','A');
dbms_stats.COLUMN_stats_show('SYSDBA','B2','B');
dbms_stats.COLUMN_stats_show('SYSDBA','B2','C');

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BrBI8UMH-1692083999258)(C:\Users\SU\AppData\Roaming\Typora\typora-user-images\image-20230815111735923.png)]](https://img-blog.csdnimg.cn/3edc08383daf479f88e4dd65b4884a30.png)