索引的統計信息收集
- 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');