Optimizing Oracle Optimizer (2011년)
Manual Histogram 0 0 2,293

by 구루비스터디 Histogram [2018.07.14]


Histogram을 생성하지 않고 조작하기


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


"데이터베이스 스터디모임" 에서 2009년에 "OPTIMIZING ORACLE OPTIMIZER " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3973

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입