欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

微課sql優(yōu)化(7)、統(tǒng)計(jì)信息收集(5)-關(guān)于直方圖

1、直方圖介紹


    你可以為列統(tǒng)計(jì)直方圖。這些直方圖為列數(shù)據(jù)的分布情況提供準(zhǔn)確的估算。當(dāng)列數(shù)據(jù)傾斜時(shí),直方圖提供更為優(yōu)化的選擇性估算,為數(shù)據(jù)分布不均勻的情況提供最優(yōu)的執(zhí)行計(jì)劃。
Oracle Database為提供2種類別的列統(tǒng)計(jì)信息直方圖:
  • Height-Balanced Histograms
  • Frequency Histograms
    數(shù)據(jù)庫存儲(chǔ)直方圖信息*TAB_COL_STATISTICS視圖(用戶和DBA)。列值范圍:HEIGHTBALANCED, FREQUENCY, or NONE。
2、Height-Balanced Histograms
    在height-balanced histogram中,列值被劃分為桶,使得每個(gè)桶包含大致相同數(shù)量的行。直方圖顯示端點(diǎn)在值范圍內(nèi)的位置。
考慮一個(gè)my_col值為1到100之間的列,以及一個(gè)10個(gè)桶的直方圖。如果數(shù)據(jù)my_col均勻分布,則直方圖看起來與圖13-1類似,其中數(shù)字是端點(diǎn)值。例如,第七個(gè)桶具有值在60到70之間的行。
圖13-1具有均勻分布的高度平衡直方圖

微課sql優(yōu)化(7)、統(tǒng)計(jì)信息收集(5)-關(guān)于直方圖
    每個(gè)桶中的行數(shù)為總行數(shù)的10%。在這個(gè)均勻分布的例子中,40%的行的值在60到100之間。
如果數(shù)據(jù)不均勻分布,則直方圖可能如圖13-2所示。在這種情況下,大多數(shù)行的列的值為5。只有10%的行的值在60到100之間。
圖13-2具有非均勻分布的高度平衡直方圖
    您可以使用USER_TAB_HISTOGRAMS表格查看高度平衡的直方圖,如示例13-1所示。
  1. BEGIN
  2.   DBMS_STATS . GATHER_table_STATS  (  
  3.     OWNNAME  = >   'OE' ,  
  4.     TABNAME  = >   'INVENTORIES' ,  
  5.     METHOD_OPT  = >   'FOR COLUMNS SIZE 10 quantity_on_hand'   ) ;
  6. END ;
  7. /

  8. SELECT  COLUMN_NAME ,  NUM_DISTINCT ,  NUM_BUCKETS ,  HISTOGRAM 
  9. FROM  USER_TAB_COL_STATISTICS
  10. WHERE  TABLE_NAME  =   'INVENTORIES'   AND  COLUMN_NAME  =   'QUANTITY_ON_HAND' ;

  11. COLUMN_NAME NUM_DISTINCT NUM_BUCKETS HISTOGRAM
  12. ------------------------------ ------------ ----------- ---------------
  13. QUANTITY_ON_HAND 237 10 HEIGHT BALANCED

  14. SELECT  ENDPOINT_NUMBER ,  ENDPOINT_VALUE 
  15. FROM  USER_TAB_HISTOGRAMS
  16. WHERE  TABLE_NAME  =   'INVENTORIES'   AND  COLUMN_NAME  =   'QUANTITY_ON_HAND'
  17. ORDER   BY  ENDPOINT_NUMBER ;

  18. ENDPOINT_NUMBER ENDPOINT_VALUE
  19. --------------- --------------
  20.               0 0
  21.               1 27
  22.               2 42
  23.               3 57
  24.               4 74
  25.               5 98
  26.               6 123
  27.               7 149
  28.               8 175
  29.               9 202
  30.              10 353
       在示例13-1查詢輸出中,一行(1-10)對(duì)應(yīng)于直方圖中的每個(gè)桶。Oracle數(shù)據(jù)庫向該直方圖添加了特殊的第0個(gè)數(shù)據(jù)桶,因?yàn)榈?個(gè)數(shù)據(jù)桶(27)中的值不是quantity_on_hand列的最小值。第0個(gè)桶的最小值為0 quantity_on_hand。

3、 frequency histogra m


    在 frequency histogram中,列的每個(gè)值對(duì)應(yīng)于直方圖的單個(gè)桶。每個(gè)桶包含此單個(gè)值的出現(xiàn)次數(shù)。例如,假設(shè)36行包含列的值1 warehouse_id。端點(diǎn)值1具有端點(diǎn)號(hào)36。
數(shù)據(jù)庫在以下條件下自動(dòng)創(chuàng)建頻率直方圖,而不是高度平衡的直方圖:
  • 不同值的數(shù)量小于或等于指定的直方圖桶數(shù)(最多254個(gè))。
  • 每個(gè)列值重復(fù)一次。
您可以使用USER_TAB_HISTOGRAMS視圖查看頻率直方圖,如示例13-2所示。
  1. BEGIN
  2.   DBMS_STATS . GATHER_TABLE_STATS  (  
  3.     OWNNAME  = >   'OE' ,  
  4.     TABNAME  = >   'INVENTORIES' ,  
  5.     METHOD_OPT  = >   'FOR COLUMNS SIZE 20 warehouse_id'   ) ;
  6. END ;
  7. /

  8. SELECT  COLUMN_NAME ,  NUM_DISTINCT ,  NUM_BUCKETS ,  HISTOGRAM 
  9. FROM  USER_TAB_COL_STATISTICS
  10. WHERE  TABLE_NAME  =   'INVENTORIES'   AND  COLUMN_NAME  =   'WAREHOUSE_ID' ;

  11. COLUMN_NAME NUM_DISTINCT NUM_BUCKETS HISTOGRAM
  12. ------------------------------ ------------ ----------- ---------------
  13. WAREHOUSE_ID 9 9 FREQUENCY

  14. SELECT  ENDPOINT_NUMBER ,  ENDPOINT_VALUE 
  15. FROM  USER_TAB_HISTOGRAMS
  16. WHERE  TABLE_NAME  =   'INVENTORIES'   AND  COLUMN_NAME  =   'WAREHOUSE_ID'
  17. ORDER   BY  ENDPOINT_NUMBER ;

  18. ENDPOINT_NUMBER ENDPOINT_VALUE
  19. --------------- --------------
  20.              36 1
  21.             213 2
  22.             261 3
  23.             370 4
  24.             484 5
  25.             692 6
  26.             798 7
  27.             984 8
  28.            1112 9
在例13-2中,第一個(gè)桶為warehouse_id1。該值在表中顯示36次,如以下查詢所證實(shí):
oe@PROD> SELECT COUNT(*) FROM inventories WHERE warehouse_id = 1;
 
  COUNT(*)
----------
        36

5、 練習(xí)4 、直方圖優(yōu)化練習(xí)


統(tǒng)計(jì)已銷戶用戶數(shù)量,請(qǐng)優(yōu)化以下語句
select count(1) from ht.c_cons where status='close';
  1. SQL >   select   status , count ( 1 )   from   ht . c_cons   group   by   status ;

  2. STATUS                              COUNT ( 1 )
  3. ------------------------------------------------------------ ----------
  4. close                                 19
  5. open                                 9519
  6. creating                             462

  7. SQL >   create   index  ht . idx_c_cons_status  on  ht . c_cons ( status ) ;
  8. SQL > col  owner  for  a10
  9.   col  table_name  for  a20
  10. col  column_name  for  a20
  11. col  data_type  for  a30
  12. col  histogram  for  a20
  13. select  owner , table_name , column_name , data_type ,
  14. column_id , num_distinct , histogram , NUM_NULLS , LAST_ANALYZED          from  
  15. dba_tab_columns  where  table_name = 'C_CONS'   and  owner = 'HT'
  16. order   by  column_id ; SQL >  SQL >  SQL >  SQL >  SQL >  2 3 4 

  17. OWNER              TABLE_NAME        COLUMN_NAME     DATA_TYPE             COLUMN_ID NUM_DISTINCT HISTOGRAM         NUM_NULLS LAST_ANALYZED
  18. ---------- -------------------- -------------------- ------------------------------ ---------- ------------ -------------------- ---------- ------------------------------
  19. HT              C_CONS        CONS_NO       NUMBER                  1          10000 NONE             0 20 - AUG - 17
  20. HT          C_CONS        CONS_NAME      VARCHAR2                  2          5057 NONE             0 20 - AUG - 17
  21. HT          C_CONS        ORG_NAME      VARCHAR2                  3             12 NONE             0 20 - AUG - 17
  22. HT          C_CONS        BUILD_DATE      DATE                  4          10000 NONE             0 20 - AUG - 17
  23. HT          C_CONS        STATUS          VARCHAR2                  5              3 NONE             0 20 - AUG - 17

  24. SQL >  exec DBMS_STATS . GATHER_TABLE_STATS ( ownname  = >   'HT' , tabname  = >   'C_CONS' , estimate_percent  = >  30 , method_opt  = >   'for columns size 50 status' , no_invalidate  = >   FALSE , degree  = >  4 , cascade   = >   TRUE ) ;
  25. PL / SQL procedure successfully completed .
  26. SQL >   col  owner  for  a10
  27. SQL >   col  table_name  for  a20
  28. col  column_name  for  a20
  29. col  data_type  for  a30
  30. col  histogram  for  a20
  31. select  owner , table_name , column_name , data_type ,
  32. column_id , num_distinct , histogram , NUM_NULLS , LAST_ANALYZED          from  
  33. dba_tab_columns  where  table_name = 'C_CONS'   and  owner = 'HT'
  34. order   by  column_id ; SQL >  SQL >  SQL >  SQL >  2 3 4 

  35. OWNER     TABLE_NAME        COLUMN_NAME     DATA_TYPE             COLUMN_ID NUM_DISTINCT HISTOGRAM         NUM_NULLS LAST_ANALYZED
  36. ---------- -------------------- -------------------- ------------------------------ ---------- ------------ -------------------- ---------- ------------------------------
  37. HT     C_CONS        CONS_NO       NUMBER                  1     10000 NONE             0 20 - AUG - 17
  38. HT     C_CONS        CONS_NAME      VARCHAR2                  2     5057 NONE             0 20 - AUG - 17
  39. HT     C_CONS        ORG_NAME      VARCHAR2                  3         12 NONE             0 20 - AUG - 17
  40. HT     C_CONS        BUILD_DATE      DATE                  4     10000 NONE             0 20 - AUG - 17
  41. HT     C_CONS        STATUS          VARCHAR2                  5         3 FREQUENCY             0 20 - AUG - 17
  42. SQL >   select   count ( 1 )   from  ht . c_cons  where  status = 'open' ;
  43. Execution Plan
  44. ----------------------------------------------------------
  45. Plan hash  value :  2016425671

  46. -------------------------------------------------------------------------------------------
  47. |  Id  |  Operation      |  Name          |   Rows   |  Bytes  |  Cost  ( % CPU ) |  Time      |
  48. -------------------------------------------------------------------------------------------
  49. |  0  |   SELECT  STATEMENT  |            |     1  |     6  |     8  ( 0 ) |  00 : 00 : 01  |
  50. |  1  |  SORT AGGREGATE  |            |     1  |     6  |       |       |
  51. | *  2  |   INDEX  FAST FULL SCAN |  IDX_C_CONS_STATUS  |  9639  |  57834  |     8  ( 0 ) |  00 : 00 : 01  |
  52. -------------------------------------------------------------------------------------------

  53. Predicate Information  ( identified   by  operation id ) :
  54. ---------------------------------------------------
  55.    2  -  filter ( "STATUS" = 'open' )
  56. Statistics
  57. ----------------------------------------------------------
  58.      1 recursive calls
  59.      0 db block gets
  60.      28 consistent gets
  61.      0 physical reads
  62.      0 redo  size
  63.     527 bytes sent via SQL * Net  to  client
  64.     523 bytes received via SQL * Net  from  client
  65.      2 SQL * Net roundtrips  to / from  client
  66.      0 sorts  ( memory )
  67.      0 sorts  ( disk )
  68.      1  rows  processed
  69. SQL >  
  70. SQL >   select   count ( 1 )   from  ht . c_cons  where  status = 'close' ;
  71. Execution Plan
  72. ----------------------------------------------------------

  73. Plan hash  value :  2292286995

  74. ---------------------------------------------------------------------------------------
  75. |  Id  |  Operation      |  Name      |   Rows   |  Bytes  |  Cost  ( % CPU ) |  Time  |
  76. ---------------------------------------------------------------------------------------
  77. |  0  |   SELECT  STATEMENT  |           |  1  |  6  |  1     ( 0 ) |  00 : 00 : 01  |
  78. |  1  |  SORT AGGREGATE  |           |  1  |  6  |        |       |
  79. | *  2  |   INDEX  RANGE SCAN |  IDX_C_CONS_STATUS  |  24  |  144  |  1     ( 0 ) |  00 : 00 : 01  |
  80. ---------------------------------------------------------------------------------------

  81. Predicate Information  ( identified   by  operation id ) :
  82. ---------------------------------------------------

  83.    2  -   access ( "STATUS" = 'close' )


  84. Statistics
  85. ----------------------------------------------------------
  86.      1 recursive calls
  87.      0 db block gets
  88.      2 consistent gets
  89.      0 physical reads
  90.      0 redo  size
  91.     526 bytes sent via SQL * Net  to  client
  92.     523 bytes received via SQL * Net  from  client
  93.      2 SQL * Net roundtrips  to / from  client
  94.      0 sorts  ( memory )
  95.      0 sorts  ( disk )
  96.      1  rows  processed

分享題目:微課sql優(yōu)化(7)、統(tǒng)計(jì)信息收集(5)-關(guān)于直方圖
網(wǎng)頁路徑:http://aaarwkj.com/article30/ipdppo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈營銷型網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、網(wǎng)站制作電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
色噜噜狠狠狠久久综合一区| 国产又大又爽免费视频| 亚洲天堂一区二区av| 亚洲精品一区二区三区高清| 久久精品色一情一乱一伦| 亚洲国产综合六月深深爱| 欧美日韩欧美黄色三级| 欧美精品国产欧美精品国产| 欧美a级黄片免费在线观看| 国产精品亚洲二区三区| 少妇被按摩高潮在线观看| 高潮少妇水多毛多av| 国产午夜精品一区二区三区| 五月开心婷婷中文字幕| 神马免费午夜福利剧场| 久视频这里只有精品99| 四虎精品视频在线免费| 欧美日韩国产精品综合| 精品久久人人做爽综合| 国产精品中文第一字幕| 东京热男人的天堂视频| 日韩精品成人区中文字幕| 日韩性生活视频免费播放| 超碰97精品在线观看| 亚洲天堂欧美日韩一区| 国产原创传媒在线观看| 欧美日本精品在线观看| 欧美日韩在线观看黄色| 粉嫩在线一区二区懂色| 蜜臀av中文字幕亚洲| 凹凸国产精品熟女视频| 日本岛国免费一区二区| 久久精品中文字幕人妻| 亚洲av色香蕉一区二区| 国产亚洲精品久久久9| 日本岛国大片在线视频| 未满十八禁止在线观看av| 日韩欧美精品在线不卡| 91欧美日韩精品在线| 在线观看高清国产黄色片| 91麻豆精品一二三区在线|