索引的统计信息收集
- 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');
可以发现统计信息中的行数,与索引对应的列行数无关。
索引对应多个列时,求行数
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');