インデックス統計の収集
- GATHER_INDEX_STATS
- インデックス統計ショー
スキーマ名、インデックス名に基づいて、そのインデックスの統計を取得します。GATHER_TABLE_STATS、GATHER_INDEX_STATS、または GATHER_SCHEMA_STATS による収集後に表示するために使用されます。2 つの結果セットを返します: 1 つはインデックス統計用、もう 1 つはヒストグラム統計用です。
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 による収集後に表示するために使用されます。2 つの結果セットが返されます: 1 つは列統計用、もう 1 つはヒストグラム統計用です。
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');