Home > Database > Mysql Tutorial > body text

Oracle 对象统计信息

WBOY
Release: 2016-06-07 17:25:06
Original
866 people have browsed it

对象统计信息描述数据是如何在数据库中存储的。比如,一张表里面有多少行数据,某一列数据的最大值是多少等等。这些信息有助于查

一. 概述

对象统计信息描述数据是如何在数据库中存储的。比如,一张表里面有多少行数据,,某一列数据的最大值是多少等等。这些信息有助于查询优化器找到正确高效的执行计划。举个例子,有这样一个场景,从一个特定地点回家,哪种交通方式最快捷?汽车,火车还是飞机?如果不知道我在哪里,我家在哪里,就得不到合理的答案。同样,如果没有对象统计信息,查询优化器也找不到正确高效的执行计划。

二. 可用的对象统计信息

有三种类型的对象统计信息可用:表统计,列统计和索引统计,下面举一个例子来说明一下这三种类型分别提供了什么样的统计信息。

1. 准备表数据

SET SERVEROUTPUT ON

DROP TABLE t;

execute dbms_random.seed(0)

CREATE TABLE t
AS
SELECT rownum AS id,
      round(dbms_random.normal*1000) AS val1,
      100+round(ln(rownum/3.25+2)) AS val2,
      100+round(ln(rownum/3.25+2)) AS val3,
      dbms_random.string('p',250) AS pad
FROM dual
CONNECT BY level ORDER BY dbms_random.value;

UPDATE t SET val1 = NULL WHERE val1

ALTER TABLE t ADD CONSTRAINT t_pk PRIMARY KEY (id);

CREATE INDEX t_val1_i ON t (val1);
CREATE INDEX t_val2_i ON t (val2);

BEGIN
  dbms_stats.gather_table_stats(ownname          => user,
                                tabname          => 'T',
                                estimate_percent => 100,
                                method_opt      => 'for all columns size skewonly',
                                cascade          => TRUE);
END;
/

最后这个存储过程的意思是收集当前用户表T的统计信息,各个参数的含义就不说明了。

linux

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!