column cascade format a30column degree format a10column estimate_percent format a30column method_opt format a30column no_invalidate format a30column granularity format a10column publish format a10column INCREMENTAL format a10column STALE_PERCENT format a10column AUTOSTATS_TARGET format a10
SELECT DBMS_STATS.get_param ('CASCADE') CASCADE, DBMS_STATS.get_param ('DEGREE') DEGREE,
DBMS_STATS.get_param ('ESTIMATE_PERCENT') estimate_percent, DBMS_STATS.get_param ('METHOD_OPT') method_opt, DBMS_STATS.get_param ('NO_INVALIDATE') no_invalidate, DBMS_STATS.get_param ('GRANULARITY') granularity, DBMS_STATS.get_param ('PUBLISH') publish, DBMS_STATS.get_param ('INCREMENTAL') incremental, DBMS_STATS.get_param ('STALE_PERCENT') stale_percent, DBMS_STATS.get_param ('AUTOSTATS_TARGET') autostats_target FROM DUAL;
CASCADE DEGREE ESTIMATE_PERCENT METHOD_OPT NO_INVALIDATE GRANULARIT PUBLISH INCREMENTA STALE_PERC AUTOSTATS_
------------------------------ ---------- ------------------------------ ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ----------DBMS_STATS.AUTO_CASCADE NULL DBMS_STATS.AUTO_SAMPLE_SIZE FOR ALL COLUMNS SIZE AUTO DBMS_STATS.AUTO_INVALIDATE AUTO TRUE FALSE 10 AUTOselect * from t1 where id1=1 and id2=1 and name='test';
exec dbms_stats.FLUSH_DATABASE_MONITORING_INFO()
SELECT * FROM sys.col_usage$ where obj# in (select object_id from dba_objects where wner=user and object_name='T1');
OBJ# INTCOL# EQUALITY_PREDS EQUIJOIN_PREDS NONEQUIJOIN_PREDS RANGE_PREDS LIKE_PREDS NULL_PREDS TIMESTAMP
---------- ---------- -------------- -------------- ----------------- ----------- ---------- ---------- -------------------
275187 1 1 0 0 0 0 0 2013-05-28 15:27:22
275187 2 1 0 0 0 0 0 2013-05-28 15:27:22
275187 3 1 0 0 0 0 0 2013-05-28 15:27:22
SQL> exec dbms_stats.gather_table_stats(user,'T1',cascade=>true);
PL/SQL procedure successfully completed.
SQL> SELECT column_name, num_buckets, num_distinct, low_value, high_value, density, histogram FROM dba_tab_col_statistics WHERE wner = USER AND table_name = 'T1';
COLUMN_NAME NUM_BUCKETS NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY HISTOGRAM
-------------------- ----------- ------------ ---------- ---------- ---------- ---------------
ID1 1 10000 C102 C302 .0001 NONE
ID2 100 100 C102 C202 .00005 FREQUENCY
NAME 1 1 74657374 74657374 .00005 FREQUENCY
SQL> exec dbms_stats.gather_table_stats(user,'T1',cascade=>true,method_opt=>'for columns size 1');
PL/SQL procedure successfully completed.
SQL> SELECT column_name, num_buckets, num_distinct, low_value, high_value, density, histogram FROM dba_tab_col_statistics WHERE wner = USER AND table_name = 'T1';
COLUMN_NAME NUM_BUCKETS NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY HISTOGRAM
-------------------- ----------- ------------ ---------- ---------- ---------- ---------------
ID1 1 10000 C102 C302 .0001 NONE
ID2 100 100 C102 C202 .00005 FREQUENCY
NAME 1 1 74657374 74657374 .00005 FREQUENCY--可以发现2个字段直方图信息都没有删除. 我觉得这样写'for columns size 1'可以理解为没有任何列选择1,因为columns后面没有字段名.
SQL> exec dbms_stats.gather_table_stats(user,'T1',cascade=>true,method_opt=>'for all columns size 1');
PL/SQL procedure successfully completed.
SQL> SELECT column_name, num_buckets, num_distinct, low_value, high_value, density, histogram FROM dba_tab_col_statistics WHERE wner = USER AND table_name = 'T1';
COLUMN_NAME NUM_BUCKETS NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY HISTOGRAM
-------------------- ----------- ------------ ---------- ---------- ---------- ---------------
ID1 1 10000 C102 C302 .0001 NONE
ID2 1 100 C102 C202 .01 NONE
NAME 1 1 74657374 74657374 1 NONE
SQL> exec dbms_stats.gather_table_stats(user,'T1',cascade=>true,method_opt=>'for all columns size 254');
PL/SQL procedure successfully completed.
SQL> SELECT column_name, num_buckets, num_distinct, low_value, high_value, density, histogram FROM dba_tab_col_statistics WHERE wner = USER AND table_name = 'T1';
COLUMN_NAME NUM_BUCKETS NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY HISTOGRAM
-------------------- ----------- ------------ ---------- ---------- ---------- ---------------
ID1 254 10000 C102 C302 .0001 HEIGHT BALANCED
ID2 100 100 C102 C202 .00005 FREQUENCY
NAME 1 1 74657374 74657374 .00005 FREQUENCY
SQL> exec dbms_stats.gather_table_stats(user,'T1',cascade=>true,method_opt=>'for all columns ');
PL/SQL procedure successfully completed.
SQL> SELECT column_name, num_buckets, num_distinct, low_value, high_value, density, histogram FROM dba_tab_col_statistics WHERE wner = USER AND table_name = 'T1';
COLUMN_NAME NUM_BUCKETS NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY HISTOGRAM
-------------------- ----------- ------------ ---------- ---------- ---------- ---------------
ID1 75 10000 C102 C302 .0001 HEIGHT BALANCED
ID2 75 100 C102 C202 .01 HEIGHT BALANCED
NAME 1 1 74657374 74657374 .00005 FREQUENCY
SQL> exec dbms_stats.gather_table_stats(user,'T1',cascade=>true,method_opt=>'for columns ');
PL/SQL procedure successfully completed.
SQL> SELECT column_name, num_buckets, num_distinct, low_value, high_value, density, histogram FROM dba_tab_col_statistics WHERE wner = USER AND table_name = 'T1';
COLUMN_NAME NUM_BUCKETS NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY HISTOGRAM
-------------------- ----------- ------------ ---------- ---------- ---------- ---------------
ID1 75 10000 C102 C302 .0001 HEIGHT BALANCED
ID2 75 100 C102 C202 .01 HEIGHT BALANCED
NAME 1 1 74657374 74657374 .00005 FREQUENCY
SQL> exec dbms_stats.gather_table_stats(user,'T1',cascade=>true,method_opt=>'for columns id1 size 254 for columns id2 size 254 for all columns size 1');
PL/SQL procedure successfully completed.
SQL> SELECT column_name, num_buckets, num_distinct, low_value, high_value, density, histogram FROM dba_tab_col_statistics WHERE wner = USER AND table_name = 'T1';
COLUMN_NAME NUM_BUCKETS NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY HISTOGRAM
-------------------- ----------- ------------ ---------- ---------- ---------- ---------------
ID1 254 10000 C102 C302 .0001 HEIGHT BALANCED
ID2 100 100 C102 C202 .00005 FREQUENCY
NAME 1 1 74657374 74657374 1 NONE
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-762252/ ,如需转载,请注明出处,否则将追究法律责任。