Home > Database > Mysql Tutorial > body text

Oracle收集直方图信息

WBOY
Release: 2016-06-07 17:33:41
Original
1422 people have browsed it

直方图在列数据分布不均匀时非常有用,查询优化器需要直方图信息才能做出正确的估算。有频度直方图与等高直方图两种。本篇依然使

直方图在列数据分布不均匀时非常有用,查询优化器需要直方图信息才能做出正确的估算。有频度直方图与等高直方图两种。本篇依然使用上一篇的测试表,文章链接Oracle中收集表与列统计信息

一、频度直方图

频度直方图使用的不是频度,,而是使用累积频度。下面的endpoint_number是取值的累计次数。

SELECT ENDPOINT_VALUE,
      ENDPOINT_NUMBER,
      ENDPOINT_NUMBER - LAG(ENDPOINT_NUMBER, 1, 0) OVER(ORDER BY ENDPOINT_NUMBER) AS FREQUENCY
  FROM USER_TAB_HISTOGRAMS
 WHERE TABLE_NAME = 'T'
  AND COLUMN_NAME = 'VAL2'
 ORDER BY ENDPOINT_NUMBER;

ENDPOINT_VALUE

ENDPOINT_NUMBER

FREQUENCY

101

8

8

102

33

25

103

101

68

104

286

185

105

788

502

106

1000

212

频度直方图的本质特征有:

①桶数(分类数)等于唯一值总数。

②列endpoint_value提供该本身。

③列endpoint_number是取值的累计出现次数。只有当前endpoint_number减去上一endpoint_number才是当前值的出现次数。

下面演示查询优化器怎样使用频度直方图精确地估算出基于列val2过滤后查询返回的基数(cardinality)。

EXPLAIN PLAN SET STATEMENT_ID '101' FOR SELECT * FROM t WHERE val2=101;
EXPLAIN PLAN SET STATEMENT_ID '102' FOR SELECT * FROM t WHERE val2=102;
EXPLAIN PLAN SET STATEMENT_ID '103' FOR SELECT * FROM t WHERE val2=103;
EXPLAIN PLAN SET STATEMENT_ID '104' FOR SELECT * FROM t WHERE val2=104;
EXPLAIN PLAN SET STATEMENT_ID '105' FOR SELECT * FROM t WHERE val2=105;
EXPLAIN PLAN SET STATEMENT_ID '106' FOR SELECT * FROM t WHERE val2=106;

SELECT STATEMENT_ID,CARDINALITY FROM plan_table WHERE ID=0;

STATEMENT_ID

CARDINALITY

101

8

102

25

103

68

104

185

105

502

106

212

当列的唯一值的个数大于桶允许的最大数量(254)时,就不能使用频度直方图了,此时应该使用等高直方图。

更多详情见请继续阅读下一页的精彩内容:

相关阅读:

32个字节限制——Oracle直方图优化

[Oracle新手教程] 用PL/SQL画直方图

linux

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!