达梦数据库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');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eyIc7dGD-1692083999256)(C:\Users\SU\AppData\Roaming\Typora\typora-user-images\image-20230815101619351.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)]

猜你喜欢

转载自blog.csdn.net/weixin_43786143/article/details/132299803