UPDATE STATISTICS¶
说明¶
更新统计信息
参数¶
statistics_name
要更新的统计的名称。统计名必须符合标识符规则并且是一个合法有效的名称。
table
该统计基于的表名。
SCAN BY DEFAULT
指定按缺省的方式读取表中的行以更新统计信息。
SCAN BY FULL
指定应读取表中的所有行以更新统计信息。
SCAN BY PERCENT value
按指定比例的方法读取表中的行以更新统计信息。value是指定的比例,必须介于1到100之间。
SCAN BY MINVALUE value
按指定的最小数目对表中的行进行采样以更新统计信息。value是采样的最小数目,可以是从0到n的总行数。
注解
对于一个已经建立的统计,可以随时计算更新统计值,尤其是当统计基于的表和列的信息已经发生了大量的插入、修改和删除操作以后。
在更新统计中,依然可以指定统计采样的方式,这与create statistics中是不矛盾的,当执行更新统计信息时,不指定任何采样方式情况下,系统会利用在create statistics中指定的采样方式作为缺省的采样方式。而如果update statistics语句中指定了采样方式,则系统将采用指定的采样方式来计算更新统计信息。
示例¶
示例1: 更新统计信息(以 CREATE STATISTICS 中指定的方式)
-- 清理环境
DROP 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);
-- 建立一个基于按比例采样方式的统计
-- 系统将会自动抽取 tab1 表 a 列中 25% 的元组来进行采样
CREATE STATISTICS stat1 ON tab1(a) SCAN BY PERCENT 25;
-- 更新统计信息(以 CREATE STATISTICS 中指定的方式)
UPDATE STATISTICS stat1 ON tab1;
-- 删除统计和表
DROP STATISTICS stat1 ON tab1;
DROP TABLE tab1;
示例2: 更新统计信息(以全扫描方式)
-- 清理环境
DROP STATISTICS stat2 ON tab2;
DROP TABLE tab2 CASCADE;
-- 创建表并插入数据
CREATE TABLE tab2(a INT, b INT);
INSERT INTO tab2 VALUES(1, 1);
INSERT INTO tab2 VALUES(2, 221);
INSERT INTO tab2 VALUES(3, 223);
-- 对 tab2 表中的 a 列建立一个基于全扫描的统计
CREATE STATISTICS stat2 ON tab2(a) SCAN BY FULL;
-- 更新统计信息(以全扫描方式)
UPDATE STATISTICS stat2 ON tab2 SCAN BY FULL;
-- 删除统计和表
DROP STATISTICS stat2 ON tab2;
DROP TABLE tab2;