drop table t1 purge;
create table t1(c1 int);
select table_name,column_name,num_distinct,low_value,high_value,histogram
from dba_tab_columns where table_name = 'T1';
TABLE_NAME COLUMN_NAME NUM_DISTINCT LOW_VALUE HIGH_VALUE HISTOGRAM
---------- ----------- ------------ --------- ---------- ---------
T1 C1 NONE
Histogram을 수동으로 생성하는 pl/sql을 작성
declare
v_srec dbms_stats.statrec;
v_numvals dbms_stats.numarray;
begin
v_srec.epc := 5;
v_srec.eavs := null;
v_numvals := dbms_stats.numarray(1, 2, 3, 4, 5);
v_srec.bkvals := dbms_stats.numarray(10000, 20000, 30000, 40000, 50000);
dbms_stats.prepare_column_values(v_srec, v_numvals);
dbms_stats.set_table_stats(
ownname=>user,
tabname=>'t1',
numrows=>150000,
numblks=>1000,
avgrlen=>150
);
dbms_stats.set_column_stats(
ownname=>user,
tabname=>'t1',
colname=>'c1',
distcnt=>5,
density=>1/2/150000,
nullcnt=>0,
srec=>v_srec
);
end;
/
select table_name,column_name,num_distinct,low_value,high_value,histogram
from dba_tab_columns where table_name = 'T1';
TABLE_NAME COLUMN_NAME NUM_DISTINCT LOW_VALUE HIGH_VALUE HISTOGRAM
---------- ----------- ------------ --------- ---------- ---------
T1 C1 5 C102 C106 FREQUENCY