CREATE MULTIPLE STATISTICS

说明

创建多维统计信息

语法

create_multiple_statistics ::=

参数

staistics_name

统计名

table

表名

column

列名,目前只支持两列

SCAN BY FULL

按全表扫描的方式采样,不指定采样方式(SCAN BY)时,采用此方式

SCAN BY DEFAULT

按缺省的方式采样,行为与FULL等同

SCAN BY PERCENT value

按指定的比例采样,value须介于1到100之间,如果设置100,行为与FULL等同

SCAN BY MINVALUE value

按指定的行数进行采样,如果指定的行数超过表的总行数,行为与FULL等同

注解

1.CREATE阶段仅仅创建并记录了统计信息的相关属性,并未真正的对数据做统计工作,在使用统计信息前需要显式的调用UPDATE操作。

2.CREATE阶段指定的采样方式会作为默认采样方式存储到数据字典(SYS_MDSTST_2DSTAT)中,UPDATE阶段如果不指定采样方式则使用默认采样方式; 另外,UPDATE阶段不会更改默认采样方式,若要更改默认采样方式,需要使用ALTER操作。

示例

示例1: 建立一个基于全表扫描采样方式的统计

--  清理环境
DROP MULTIPLE STATISTICS stat1 ON tab1;
DROP TABLE tab1 CASCADE;

--  创建表
CREATE TABLE tab1(a INT, b INT);


--  对 tab1 表中的 a,b 列建立多维统计
CREATE MULTIPLE STATISTICS stat1 ON tab1(a, b) SCAN BY FULL;


--  删除统计和表
DROP MULTIPLE STATISTICS stat1 ON tab1;
DROP TABLE tab1;

示例2: 建立一个基于指定比例采样方式的统计

--  清理环境
DROP MULTIPLE STATISTICS stat2 ON tab2;
DROP TABLE tab2 CASCADE;

--  创建表
CREATE TABLE tab2(a INT, b INT);


--  系统将会自动抽取 tab2 表 a, b列中 25% 的元组来进行采样
CREATE MULTIPLE STATISTICS stat2 ON tab2(a, b) SCAN BY PERCENT 25;


--  删除统计和表
DROP MULTIPLE STATISTICS stat2 ON tab2;
DROP TABLE tab2;

示例3: 建立一个基于指定行数采样的统计

--  清理环境
DROP MULTIPLE STATISTICS stat3 ON tab1;
DROP TABLE tab3 CASCADE;

--  创建表
CREATE TABLE tab3(a INT, b INT);

--  系统将随机抽取指定的元组数来生成统计信息
CREATE MULTIPLE STATISTICS stat3 ON tab3(a, b) SCAN BY MINVALUE 1000;


--  删除统计和表
DROP MULTIPLE STATISTICS stat3 ON tab3;
DROP TABLE tab3;