SQL> drop table test purge;
Table dropped.
SQL> create table test as select * from dba_objects;
Table created.
SQL> select a.column_name,
b.num_rows,
a.num_distinct Cardinality,
round(a.num_distinct / b.num_rows * 100, 2) selectivity,
a.histogram,
a.num_buckets
from dba_tab_col_statistics a, dba_tables b
where a.owner = b.owner
and a.table_name = b.table_name
and a.owner = 'TEST'
and a.table_name = 'TEST';
2 3 4 5 6 7 8 9 10 11
no rows selected
此时没有直方图的信息
BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname => 'TEST',
tabname => 'TEST',
estimate_percent => 100,
method_opt => 'for all columns size skewonly',
no_invalidate => FALSE,
degree => 8,
cascade => TRUE);
END;
method_opt => 'for all columns size skewonly'---这种方式基本上对所有的列都搜集了直方图信息
SQL> select a.column_name,
b.num_rows,
a.num_distinct Cardinality,
round(a.num_distinct / b.num_rows * 100, 2) selectivity,
a.histogram,
a.num_buckets
from dba_tab_col_statistics a, dba_tables b
where a.owner = b.owner
and a.table_name = b.table_name
and a.owner = 'TEST'
and a.table_name = 'TEST'; 2 3 4 5 6 7 8 9 10 11
COLUMN_NAME NUM_ROWS CARDINALITY SELECTIVITY HISTOGRAM NUM_BUCKETS
------------------------------ ---------- ----------- ----------- --------------- -----------
OWNER 72530 30 .04 FREQUENCY 30
OBJECT_NAME 72530 44279 61.05 HEIGHT BALANCED 254
SUBOBJECT_NAME 72530 114 .16 FREQUENCY 114
OBJECT_ID 72530 72530 100 NONE 1
DATA_OBJECT_ID 72530 7687 10.6 HEIGHT BALANCED 254
OBJECT_TYPE 72530 44 .06 FREQUENCY 44
CREATED 72530 1093 1.51 HEIGHT BALANCED 254
LAST_DDL_TIME 72530 1143 1.58 HEIGHT BALANCED 254
TIMESTAMP 72530 1214 1.67 HEIGHT BALANCED 254
STATUS 72530 2 0 FREQUENCY 2
TEMPORARY 72530 2 0 FREQUENCY 2
COLUMN_NAME NUM_ROWS CARDINALITY SELECTIVITY HISTOGRAM NUM_BUCKETS
------------------------------ ---------- ----------- ----------- --------------- -----------
GENERATED 72530 2 0 FREQUENCY 2
SECONDARY 72530 2 0 FREQUENCY 2
NAMESPACE 72530 21 .03 FREQUENCY 21
EDITION_NAME 72530 0 0 NONE 0
15 rows selected.
可以看到基本上对所有列都搜集了直方图信息
SQL> drop table test purge;
Table dropped.
SQL> create table test as select * from dba_objects;
Table created.
---------------------------------------------------------------------------------------------------------
SQL> BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname => 'TEST',
tabname => 'TEST',
estimate_percent => 100,
method_opt => 'for all columns size auto',
no_invalidate => FALSE,
degree => 8,
cascade => TRUE);
END; 2 3 4 5 6 7 8 9
10 /
PL/SQL procedure successfully completed.
SQL> select a.column_name,
b.num_rows,
a.num_distinct Cardinality,
round(a.num_distinct / b.num_rows * 100, 2) selectivity,
a.histogram,
a.num_buckets
from dba_tab_col_statistics a, dba_tables b
where a.owner = b.owner
and a.table_name = b.table_name
and a.owner = 'TEST'
and a.table_name = 'TEST'; 2 3 4 5 6 7 8 9 10 11
COLUMN_NAME NUM_ROWS CARDINALITY SELECTIVITY HISTOGRAM NUM_BUCKETS
------------------------------ ---------- ----------- ----------- --------------- -----------
OWNER 72530 30 .04 NONE 1
OBJECT_NAME 72530 44279 61.05 NONE 1
SUBOBJECT_NAME 72530 114 .16 NONE 1
OBJECT_ID 72530 72530 100 NONE 1
DATA_OBJECT_ID 72530 7687 10.6 NONE 1
OBJECT_TYPE 72530 44 .06 NONE 1
CREATED 72530 1093 1.51 NONE 1
LAST_DDL_TIME 72530 1143 1.58 NONE 1
TIMESTAMP 72530 1214 1.67 NONE 1
STATUS 72530 2 0 NONE 1
TEMPORARY 72530 2 0 NONE 1
COLUMN_NAME NUM_ROWS CARDINALITY SELECTIVITY HISTOGRAM NUM_BUCKETS
------------------------------ ---------- ----------- ----------- --------------- -----------
GENERATED 72530 2 0 NONE 1
SECONDARY 72530 2 0 NONE 1
NAMESPACE 72530 21 .03 NONE 1
EDITION_NAME 72530 0 0 NONE 0
15 rows selected.
SQL> select count(*) from test where owner='SYS';
COUNT(*)
----------
30795
SQL> BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname => 'TEST',
tabname => 'TEST',
estimate_percent => 100,
method_opt => 'for all columns size auto',
no_invalidate => FALSE,
degree => 8,
cascade => TRUE);
END;
2 3 4 5 6 7 8 9 10
11 /
PL/SQL procedure successfully completed.
SQL> select a.column_name,
b.num_rows,
a.num_distinct Cardinality,
round(a.num_distinct / b.num_rows * 100, 2) selectivity,
a.histogram,
a.num_buckets
from dba_tab_col_statistics a, dba_tables b
where a.owner = b.owner
and a.table_name = b.table_name
and a.owner = 'TEST'
and a.table_name = 'TEST'; 2 3 4 5 6 7 8 9 10 11
COLUMN_NAME NUM_ROWS CARDINALITY SELECTIVITY HISTOGRAM NUM_BUCKETS
------------------------------ ---------- ----------- ----------- --------------- -----------
OWNER 72530 30 .04 FREQUENCY 30
OBJECT_NAME 72530 44279 61.05 NONE 1
SUBOBJECT_NAME 72530 114 .16 NONE 1
OBJECT_ID 72530 72530 100 NONE 1
DATA_OBJECT_ID 72530 7687 10.6 NONE 1
OBJECT_TYPE 72530 44 .06 NONE 1
CREATED 72530 1093 1.51 NONE 1
LAST_DDL_TIME 72530 1143 1.58 NONE 1
TIMESTAMP 72530 1214 1.67 NONE 1
STATUS 72530 2 0 NONE 1
TEMPORARY 72530 2 0 NONE 1
COLUMN_NAME NUM_ROWS CARDINALITY SELECTIVITY HISTOGRAM NUM_BUCKETS
------------------------------ ---------- ----------- ----------- --------------- -----------
GENERATED 72530 2 0 NONE 1
SECONDARY 72530 2 0 NONE 1
NAMESPACE 72530 21 .03 NONE 1
EDITION_NAME 72530 0 0 NONE 0
auto的方式 有where条件去搜集
---------------------------------------------------------------------------------------------------
SQL> drop table test purge;
Table dropped.
SQL> create table test as select * from dba_objects;
Table created.
SQL> select a.column_name,
b.num_rows,
a.num_distinct Cardinality,
round(a.num_distinct / b.num_rows * 100, 2) selectivity,
a.histogram,
a.num_buckets
from dba_tab_col_statistics a, dba_tables b
where a.owner = b.owner
and a.table_name = b.table_name
and a.owner = 'TEST'
and a.table_name = 'TEST'; 2 3 4 5 6 7 8 9 10 11
no rows selected
SQL> BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname => 'TEST',
tabname => 'TEST',
estimate_percent => 100,
method_opt => 'for columns owner size skewonly',
no_invalidate => FALSE,
degree => 8,
cascade => TRUE);
END;
2 3 4 5 6 7 8 9 10
11 /
PL/SQL procedure successfully completed.
SQL> select a.column_name,
b.num_rows,
a.num_distinct Cardinality,
round(a.num_distinct / b.num_rows * 100, 2) selectivity,
a.histogram,
a.num_buckets
from dba_tab_col_statistics a, dba_tables b
where a.owner = b.owner
and a.table_name = b.table_name
and a.owner = 'TEST'
and a.table_name = 'TEST'; 2 3 4 5 6 7 8 9 10 11
COLUMN_NAME NUM_ROWS CARDINALITY SELECTIVITY HISTOGRAM NUM_BUCKETS
------------------------------ ---------- ----------- ----------- --------------- -----------
OWNER 72530 30 .04 FREQUENCY 30
SQL> select a.column_name,
b.num_rows,
a.num_distinct Cardinality,
round(a.num_distinct / b.num_rows * 100, 2) selectivity,
a.histogram,
a.num_buckets
from dba_tab_col_statistics a, dba_tables b
where a.owner = b.owner
and a.table_name = b.table_name
and a.owner = 'TEST'
and a.table_name = 'TEST'; 2 3 4 5 6 7 8 9 10 11
COLUMN_NAME NUM_ROWS CARDINALITY SELECTIVITY HISTOGRAM NUM_BUCKETS
------------------------------ ---------- ----------- ----------- --------------- -----------
OWNER 72530 30 .04 FREQUENCY 30
SQL> BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname => 'TEST',
tabname => 'TEST',
estimate_percent => 100,
method_opt => 'for all columns size repeat',
no_invalidate => FALSE,
degree => 8,
cascade => TRUE);
END;
2 3 4 5 6 7 8 9 10
11 /
PL/SQL procedure successfully completed.
SQL> select a.column_name,
b.num_rows,
a.num_distinct Cardinality,
round(a.num_distinct / b.num_rows * 100, 2) selectivity,
a.histogram,
a.num_buckets
from dba_tab_col_statistics a, dba_tables b
where a.owner = b.owner
and a.table_name = b.table_name
and a.owner = 'TEST'
and a.table_name = 'TEST'; 2 3 4 5 6 7 8 9 10 11
COLUMN_NAME NUM_ROWS CARDINALITY SELECTIVITY HISTOGRAM NUM_BUCKETS
------------------------------ ---------- ----------- ----------- --------------- -----------
OWNER 72530 30 .04 FREQUENCY 30
OBJECT_NAME 72530 44279 61.05 NONE 1
SUBOBJECT_NAME 72530 114 .16 NONE 1
OBJECT_ID 72530 72530 100 NONE 1
DATA_OBJECT_ID 72530 7687 10.6 NONE 1
OBJECT_TYPE 72530 44 .06 NONE 1
CREATED 72530 1093 1.51 NONE 1
LAST_DDL_TIME 72530 1143 1.58 NONE 1
TIMESTAMP 72530 1214 1.67 NONE 1
STATUS 72530 2 0 NONE 1
TEMPORARY 72530 2 0 NONE 1
COLUMN_NAME NUM_ROWS CARDINALITY SELECTIVITY HISTOGRAM NUM_BUCKETS
------------------------------ ---------- ----------- ----------- --------------- -----------
GENERATED 72530 2 0 NONE 1
SECONDARY 72530 2 0 NONE 1
NAMESPACE 72530 21 .03 NONE 1
EDITION_NAME 72530 0 0 NONE 0
method_opt => 'for all columns size repeat',重复上次搜集过的统计信息
搜集直方图
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:单引号“扭转乾坤”
下一篇:Action调用Service

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
浅析MySQL 8.0直方图原理
本文将对直方图概念进行介绍,借助举例描述直方图的使用方式,对创建/删除直方图的原理进行浅析,并通过例子说明其应用场景。
直方图 mysql 执行计划 查询优化 -
漏洞搜集
Apace Slor rcecve-2019-17558
中间件 公众号 搜索 -
GVIM 搜集
1.Gvim开发环境配置笔记--Wind
插件 vim gvim Windows 开发环境配置 -
搜集糖果
搜集糖果(candy)【题目描述】在一片N*M的四连通(一个点与它上方、下方、左方、右方这四个点连通)田野中,散布着很多很多的糖果。Ryz现在要以(x,y)为起点去搜集糖果。
2017-10-4 T1 数据 搜索 输出格式 -
数据搜集网站
五个必备数据搜集网站分享
数据 数据分析 商业 -
敏感文件搜集
在打比赛或者测试时,会遇到任意文件读取或者目录穿越之类的漏洞,可以读取一些敏感文件来更进一步,下面整理了一些敏感文件
渗透测试 网络安全 web安全 信息收集 apache -
Windows 业余搜集
平时搜集一下小常识,丰富计算机知识,了解系统资源。
Windows 系统管理员 打开注册表 计算机配置