關於高度均衡和頻率均衡的直方圖

kl911發表於2009-12-26

直方圖分為兩種型別,一種是比較常見的高度均衡,還有一種是頻率均衡

我在準備的時候一直是按照高度均衡這種情況介紹的,之前遇到的也都是高度均衡的。

所謂高度均衡直方圖的數量小於等於distinct+1, ENDPOINT_NUMBER這一列表示平均分配的分數, 而頻率均衡則相反,為大於distinct值,ENDPOINT_NUMBER這一列表示列distinct的數值,看如下試驗:

:


kl@k02> create table t2341 as select mod(rownum,3) a from dba_objects;

Table created.

kl@k02> exec dbms_stats.gather_table_stats(user,'T2341',cascade=>true,method_opt=>'for all columns size 4');

PL/SQL procedure successfully completed.

kl@k02> select COLUMN_NAME,ENDPOINT_NUMBER,ENDPOINT_VALUE from DBA_TAB_HISTOGRAMS where table_name='T2341';

COLUM ENDPOINT_NUMBER ENDPOINT_VALUE

----- --------------- --------------

A 1 0

A 2 1

A 4 2

(這裡方法主要是把資料均勻分配,每個桶的行數基本一致,你這裡只看到了3個桶,原因如下):

: (0-----------) (1----------------------------------) (2--------------)

: (1-----------) (2---------------)(3----------------) (4--------------) 23內的資料分佈一至,所以只顯示2這個桶號。

kl@k02> exec dbms_stats.gather_table_stats(user,'T2341',cascade=>true,method_opt=>'for all columns size 5');

PL/SQL procedure successfully completed.

kl@k02> select COLUMN_NAME,ENDPOINT_NUMBER,ENDPOINT_VALUE from DBA_TAB_HISTOGRAMS where table_name='T2341';

COLUM ENDPOINT_NUMBER ENDPOINT_VALUE

----- --------------- --------------

A 9731 0

A 19463 1

A 29195 2

(這裡桶數量為5,直方圖變為頻率均衡方式,ENDPOINT_NUMBER也就變成了相應的distinct數量)

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/661919/viewspace-1029996/,如需轉載,請註明出處,否則將追究法律責任。

相關文章