UPDATE MULTIPLE STATISTICS

说明

更新多维统计信息

语法

update_multiple_statistics ::=

参数

statistics_name

统计名

table

表名

SCAN BY FULL

按全表扫描的方式采样

SCAN BY DEFAULT

按默认采样方式采样,即SYS_MDSTST_2DSTAT中记录的采样方式,不指定采样方式(SCAN BY)时,采用此方式。

SCAN BY PERCENT value

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

SCAN BY MINVALUE value

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

注解

1.只有两列均包含单维MCV值/直方图信息,才能够进行统计

2.UPDATE阶段指定的采样方式仅影响当次更新效果,不会更新默认采样方式,如需更新默认采样方式,需执行ALTER操作。

3.当统计基于的表和列的信息已经发生了大量的插入、修改和删除操作以后,为防止信息过时,建议更新统计值。

示例

示例1: 更新统计信息

 --  清理环境
 DROP MULTIPLE STATISTICS stat1 ON tab1;
 DROP TABLE tab1 CASCADE;
 
 --  创建表并插入数据
 CREATE TABLE tab1(a INT, b INT);
 
 INSERT INTO tab1 VALUES(1, 1);
 INSERT INTO tab1 VALUES(2, 221);
 INSERT INTO tab1 VALUES(3, 223);
 
 
 CREATE MULTIPLE STATISTICS stat1 ON tab1(a, b);
 
 
 --  更新统计信息(不指定采样方式)
 UPDATE MULTIPLE STATISTICS stat1 ON tab1;
 
  -- 按照默认方式更新
 UPDATE MULTIPLE STATISTICS stat1 ON tab1 SCAN BY DEFAULT;
 
 
 --  删除统计和表
 DROP MULTIPLE STATISTICS stat1 ON tab1;
 DROP TABLE tab1;
 

示例2: 更新统计信息(以指定方式)

 --  清理环境
 DROP MULTIPLE STATISTICS stat1 ON tab1;
 DROP TABLE tab1 CASCADE;
 
 --  创建表并插入数据
 CREATE TABLE tab1(a INT, b INT);
 
 INSERT INTO tab1 VALUES(1, 1);
 INSERT INTO tab1 VALUES(2, 221);
 INSERT INTO tab1 VALUES(3, 223);
 INSERT INTO tab1 as SELECT * FROM tab1;
 INSERT INTO tab1 as SELECT * FROM tab1;
 INSERT INTO tab1 as SELECT * FROM tab1;
 INSERT INTO tab1 as SELECT * FROM tab1;
 INSERT INTO tab1 as SELECT * FROM tab1;
 INSERT INTO tab1 as SELECT * FROM tab1;
 INSERT INTO tab1 as SELECT * FROM tab1;
 INSERT INTO tab1 as SELECT * FROM tab1;
 
 
 CREATE MULTIPLE STATISTICS stat1 ON tab1(a, b);
 
 
 -- 按照比例更新
 UPDATE MULTIPLE STATISTICS stat1 ON tab1 SCAN BY PERCENT 25;
 -- 按照行数更新
 UPDATE MULTIPLE STATISTICS stat1 ON tab1 SCAN BY MINVALUE 1000;
 -- 全采样更新
 UPDATE MULTIPLE STATISTICS stat1 ON tab1 SCAN BY FULL;

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