微课sql优化(7)、统计信息收集(5)-关于直方图
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,1、直方图介绍你可以为列统计直方图。这些直方图为列数据的分布情况提供准确的估算。当列数据倾斜时,直方图提供更为优化的选择性估算,为数据分布不均匀的情况提供最优的执行计划。 Oracle Databas
千家信息网最后更新 2025年01月22日微课sql优化(7)、统计信息收集(5)-关于直方图
你可以为列统计直方图。这些直方图为列数据的分布情况提供准确的估算。当列数据倾斜时,直方图提供更为优化的选择性估算,为数据分布不均匀的情况提供最优的执行计划。 Oracle Database为提供2种类别的列统计信息直方图:
每个桶中的行数为总行数的10%。在这个均匀分布的例子中,40%的行的值在60到100之间。 如果数据不均匀分布,则直方图可能如图13-2所示。在这种情况下,大多数行的列的值为5。只有10%的行的值在60到100之间。 图13-2具有非均匀分布的高度平衡直方图 您可以使用USER_TAB_HISTOGRAMS表格查看高度平衡的直方图,如示例13-1所示。
在 frequency histogram中,列的每个值对应于直方图的单个桶。每个桶包含此单个值的出现次数。例如,假设36行包含列的值1 warehouse_id。端点值1具有端点号36。 数据库在以下条件下自动创建频率直方图,而不是高度平衡的直方图:
统计已销户用户数量,请优化以下语句 select count(1) from ht.c_cons where status='close';
1、直方图介绍
你可以为列统计直方图。这些直方图为列数据的分布情况提供准确的估算。当列数据倾斜时,直方图提供更为优化的选择性估算,为数据分布不均匀的情况提供最优的执行计划。 Oracle Database为提供2种类别的列统计信息直方图:
- Height-Balanced Histograms
- Frequency Histograms
每个桶中的行数为总行数的10%。在这个均匀分布的例子中,40%的行的值在60到100之间。 如果数据不均匀分布,则直方图可能如图13-2所示。在这种情况下,大多数行的列的值为5。只有10%的行的值在60到100之间。 图13-2具有非均匀分布的高度平衡直方图 您可以使用USER_TAB_HISTOGRAMS表格查看高度平衡的直方图,如示例13-1所示。
- BEGIN
- DBMS_STATS . GATHER_table_STATS (
- OWNNAME = > 'OE' ,
- TABNAME = > 'INVENTORIES' ,
- METHOD_OPT = > 'FOR COLUMNS SIZE 10 quantity_on_hand' ) ;
- END ;
- /
- SELECT COLUMN_NAME , NUM_DISTINCT , NUM_BUCKETS , HISTOGRAM
- FROM USER_TAB_COL_STATISTICS
- WHERE TABLE_NAME = 'INVENTORIES' AND COLUMN_NAME = 'QUANTITY_ON_HAND' ;
- COLUMN_NAME NUM_DISTINCT NUM_BUCKETS HISTOGRAM
- ------------------------------ ------------ ----------- ---------------
- QUANTITY_ON_HAND 237 10 HEIGHT BALANCED
- SELECT ENDPOINT_NUMBER , ENDPOINT_VALUE
- FROM USER_TAB_HISTOGRAMS
- WHERE TABLE_NAME = 'INVENTORIES' AND COLUMN_NAME = 'QUANTITY_ON_HAND'
- ORDER BY ENDPOINT_NUMBER ;
- ENDPOINT_NUMBER ENDPOINT_VALUE
- --------------- --------------
- 0 0
- 1 27
- 2 42
- 3 57
- 4 74
- 5 98
- 6 123
- 7 149
- 8 175
- 9 202
- 10 353
3、 frequency histogra m
在 frequency histogram中,列的每个值对应于直方图的单个桶。每个桶包含此单个值的出现次数。例如,假设36行包含列的值1 warehouse_id。端点值1具有端点号36。 数据库在以下条件下自动创建频率直方图,而不是高度平衡的直方图:
- 不同值的数量小于或等于指定的直方图桶数(最多254个)。
- 每个列值重复一次。
- BEGIN
- DBMS_STATS . GATHER_TABLE_STATS (
- OWNNAME = > 'OE' ,
- TABNAME = > 'INVENTORIES' ,
- METHOD_OPT = > 'FOR COLUMNS SIZE 20 warehouse_id' ) ;
- END ;
- /
- SELECT COLUMN_NAME , NUM_DISTINCT , NUM_BUCKETS , HISTOGRAM
- FROM USER_TAB_COL_STATISTICS
- WHERE TABLE_NAME = 'INVENTORIES' AND COLUMN_NAME = 'WAREHOUSE_ID' ;
- COLUMN_NAME NUM_DISTINCT NUM_BUCKETS HISTOGRAM
- ------------------------------ ------------ ----------- ---------------
- WAREHOUSE_ID 9 9 FREQUENCY
- SELECT ENDPOINT_NUMBER , ENDPOINT_VALUE
- FROM USER_TAB_HISTOGRAMS
- WHERE TABLE_NAME = 'INVENTORIES' AND COLUMN_NAME = 'WAREHOUSE_ID'
- ORDER BY ENDPOINT_NUMBER ;
- ENDPOINT_NUMBER ENDPOINT_VALUE
- --------------- --------------
- 36 1
- 213 2
- 261 3
- 370 4
- 484 5
- 692 6
- 798 7
- 984 8
- 1112 9
5、 练习4 、直方图优化练习
统计已销户用户数量,请优化以下语句 select count(1) from ht.c_cons where status='close';
- SQL > select status , count ( 1 ) from ht . c_cons group by status ;
- STATUS COUNT ( 1 )
- ------------------------------------------------------------ ----------
- close 19
- open 9519
- creating 462
- SQL > create index ht . idx_c_cons_status on ht . c_cons ( status ) ;
- SQL > col owner for a10
- col table_name for a20
- col column_name for a20
- col data_type for a30
- col histogram for a20
- select owner , table_name , column_name , data_type ,
- column_id , num_distinct , histogram , NUM_NULLS , LAST_ANALYZED from
- dba_tab_columns where table_name = 'C_CONS' and owner = 'HT'
- order by column_id ; SQL > SQL > SQL > SQL > SQL > 2 3 4
- OWNER TABLE_NAME COLUMN_NAME DATA_TYPE COLUMN_ID NUM_DISTINCT HISTOGRAM NUM_NULLS LAST_ANALYZED
- ---------- -------------------- -------------------- ------------------------------ ---------- ------------ -------------------- ---------- ------------------------------
- HT C_CONS CONS_NO NUMBER 1 10000 NONE 0 20 - AUG - 17
- HT C_CONS CONS_NAME VARCHAR2 2 5057 NONE 0 20 - AUG - 17
- HT C_CONS ORG_NAME VARCHAR2 3 12 NONE 0 20 - AUG - 17
- HT C_CONS BUILD_DATE DATE 4 10000 NONE 0 20 - AUG - 17
- HT C_CONS STATUS VARCHAR2 5 3 NONE 0 20 - AUG - 17
- 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 ) ;
- PL / SQL procedure successfully completed .
- SQL > col owner for a10
- SQL > col table_name for a20
- col column_name for a20
- col data_type for a30
- col histogram for a20
- select owner , table_name , column_name , data_type ,
- column_id , num_distinct , histogram , NUM_NULLS , LAST_ANALYZED from
- dba_tab_columns where table_name = 'C_CONS' and owner = 'HT'
- order by column_id ; SQL > SQL > SQL > SQL > 2 3 4
- OWNER TABLE_NAME COLUMN_NAME DATA_TYPE COLUMN_ID NUM_DISTINCT HISTOGRAM NUM_NULLS LAST_ANALYZED
- ---------- -------------------- -------------------- ------------------------------ ---------- ------------ -------------------- ---------- ------------------------------
- HT C_CONS CONS_NO NUMBER 1 10000 NONE 0 20 - AUG - 17
- HT C_CONS CONS_NAME VARCHAR2 2 5057 NONE 0 20 - AUG - 17
- HT C_CONS ORG_NAME VARCHAR2 3 12 NONE 0 20 - AUG - 17
- HT C_CONS BUILD_DATE DATE 4 10000 NONE 0 20 - AUG - 17
- HT C_CONS STATUS VARCHAR2 5 3 FREQUENCY 0 20 - AUG - 17
- SQL > select count ( 1 ) from ht . c_cons where status = 'open' ;
- Execution Plan
- ----------------------------------------------------------
- Plan hash value : 2016425671
- -------------------------------------------------------------------------------------------
- | Id | Operation | Name | Rows | Bytes | Cost ( % CPU ) | Time |
- -------------------------------------------------------------------------------------------
- | 0 | SELECT STATEMENT | | 1 | 6 | 8 ( 0 ) | 00 : 00 : 01 |
- | 1 | SORT AGGREGATE | | 1 | 6 | | |
- | * 2 | INDEX FAST FULL SCAN | IDX_C_CONS_STATUS | 9639 | 57834 | 8 ( 0 ) | 00 : 00 : 01 |
- -------------------------------------------------------------------------------------------
- Predicate Information ( identified by operation id ) :
- ---------------------------------------------------
- 2 - filter ( "STATUS" = 'open' )
- Statistics
- ----------------------------------------------------------
- 1 recursive calls
- 0 db block gets
- 28 consistent gets
- 0 physical reads
- 0 redo size
- 527 bytes sent via SQL * Net to client
- 523 bytes received via SQL * Net from client
- 2 SQL * Net roundtrips to / from client
- 0 sorts ( memory )
- 0 sorts ( disk )
- 1 rows processed
- SQL >
- SQL > select count ( 1 ) from ht . c_cons where status = 'close' ;
- Execution Plan
- ----------------------------------------------------------
- Plan hash value : 2292286995
- ---------------------------------------------------------------------------------------
- | Id | Operation | Name | Rows | Bytes | Cost ( % CPU ) | Time |
- ---------------------------------------------------------------------------------------
- | 0 | SELECT STATEMENT | | 1 | 6 | 1 ( 0 ) | 00 : 00 : 01 |
- | 1 | SORT AGGREGATE | | 1 | 6 | | |
- | * 2 | INDEX RANGE SCAN | IDX_C_CONS_STATUS | 24 | 144 | 1 ( 0 ) | 00 : 00 : 01 |
- ---------------------------------------------------------------------------------------
- Predicate Information ( identified by operation id ) :
- ---------------------------------------------------
- 2 - access ( "STATUS" = 'close' )
- Statistics
- ----------------------------------------------------------
- 1 recursive calls
- 0 db block gets
- 2 consistent gets
- 0 physical reads
- 0 redo size
- 526 bytes sent via SQL * Net to client
- 523 bytes received via SQL * Net from client
- 2 SQL * Net roundtrips to / from client
- 0 sorts ( memory )
- 0 sorts ( disk )
- 1 rows processed
直方图
数据
之间
端点
高度
统计
情况
数据库
数量
示例
信息
最小
单个
用户
范围
视图
频率
查询
不同
特殊
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库插入一条空白命令怎么写
云空间服务器在哪里
网络安全宣传周新闻标题
战地5服务器会关闭吗
服务器可以主动发送数据吗
网络安全应考哪些证书
重庆秀创软件开发工作室
洋浦网络安全会议
软件开发用户需求规格说明书
服务器监控管理说明书
mysql数据库文件导入
丰台区网络营销软件开发质量服务
服务器操作系统是网络的核心吗
哈利波特各区不同服务器互通吗
cpas使用的数据库
网络技术特殊人才
gbase数据库官网
虚拟网络安全心得
数据库控制台增加数据
UC网络安全
以经济学的角度分析网络安全
软件工程属于计算机网络技术吗
计算机网络技术与实训试卷
苹果手机wifi提示网络安全
数据库载备
内部服务器出错是啥意思
国家电网网络安全实验室
软件开发必须要英语四级吗
网络安全的意义和作用
政府网络安全认证