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;