一. 概述对象统计信息描述数据是如何在数据库中存储的。比如,一张表里面有多少行数据,某一列数据的最大值是多少等等。这些信息有助于查询优化器找到正确高效的执行计划。举个例子,有这样一个场景,从一个特定地点回家,哪种交通方式最快捷?汽车,火车还是飞机?如果不知道我在哪里,我家在哪里,就得不到合理的答案。同样,如果没有对象统计信息,查询优化器也找不到正确高效的执行计划。二. 可用的对象统计信息有三种类型的对象统计信息可用:表统计,列统计和索引统计,下面举一个例子来说明一下这三种类型分别提供了什么样的统计信息。1. 准备表数据SET SERVEROUTPUT ONDROP 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 <= 1000
ORDER BY dbms_random.value;UPDATE t SET val1 = NULL WHERE val1 < 0;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的统计信息,各个参数的含义就不说明了。
Oracle 游标与绑定变量Oracle 收集对象统计信息相关资讯 Oracle统计信息 Oracle对象
- Oracle 锁定临时表统计信息及锁住 (11/21/2014 13:58:20)
- Oracle自动统计信息的收集原理及实 (11/21/2014 13:54:02)
- Oracle 数据库对象 (04/06/2014 16:19:56)
| - Oracle 11g系统自动收集统计信息的 (11/21/2014 13:56:16)
- Oracle 收集统计信息在11g和12C下 (10/20/2014 18:38:42)
- Oracle收集索引统计信息 (12/12/2013 09:29:36)
|
本文评论 查看全部评论 (0)