此条目与一个提议的PostgreSQL功能相关,该功能在公开发布之前已被撤回。
pg_set_relation_stats() 是一个用于更新关系级别统计信息的系统函数。
pg_set_relation_stats() 添加于 PostgreSQL 18,但随后被撤销。
用法
pg_set_relation_stats (relationregclass[,relpagesinteger] [,reltuplesreal] [,relallvisibleinteger] )
→void
pg_set_relation_stats() 可由数据库所有者或具有 MAINTAIN 权限的角色执行。
pg_set_relation_stats() 主要用于测试不同统计信息集对规划器(planner)的影响,以便理解或预测计划的变更。请注意,VACUUM 或 ANALYZE 操作可能会覆盖使用此函数所做的任何更改。
变更历史
示例
pg_set_relation_stats() 的基本用法示例
postgres=# CREATE TABLE test (id INT, val TEXT);
CREATE TABLE
postgres=# SELECT pg_set_relation_stats(
relation := 'test',
relpages := NULL::integer,
reltuples := 400.0::real,
relallvisible := 4::integer
);
pg_set_relation_stats
-----------------------
(1 row)
postgres=# SELECT relpages, reltuples, relallvisible
FROM pg_class
WHERE oid = 'test'::regclass;
relpages | reltuples | relallvisible
----------+-----------+---------------
0 | 400 | 4
(1 row)
请注意,如果对表执行了任何 VACUUM、ANALYZE 或 autovacuum 操作,则由 pg_set_relation_stats() 设置的任何统计信息都将被覆盖。
postgres=# INSERT INTO test VALUES (generate_series(1,100));
INSERT 0 100
postgres=# ANALYZE test;
ANALYZE
postgres=# SELECT relpages, reltuples, relallvisible
FROM pg_class
WHERE oid = 'test'::regclass;
relpages | reltuples | relallvisible
----------+-----------+---------------
1 | 100 | 0
(1 row)
