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;