达梦数据库dbms_stats包的操作实践记录

索引的统计信息收集

  • 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');

达梦数据库dbms_stats包的操作实践记录_第1张图片

可以发现统计信息中的行数,与索引对应的列行数无关。

索引对应多个列时,求行数

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');

达梦数据库dbms_stats包的操作实践记录_第2张图片

可以发现统计信息中的行数,与索引对应的列行数无关。

列的统计信息收集

  • 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');

达梦数据库dbms_stats包的操作实践记录_第3张图片

达梦数据库dbms_stats包的操作实践记录_第4张图片

你可能感兴趣的:(数据库,oracle)