历史版本。 PostgreSQL 13 已结束支持。 2025-11-13. 请参阅 当前版本手册.
F.42. tsm_system_time #
tsm_system_time 模块提供表采样方法
SYSTEM_TIME,它可用于 SELECT 命令的 TABLESAMPLE 子句中。
这种表采样方法接受一个浮点参数,表示读取该表时最多可花费多少毫秒。这使你能够直接控制查询耗时,但代价是样本大小会变得难以预测。除非先读完整个表,否则所得样本将包含在指定时间内能够读取到的尽可能多的行。
与内置的 SYSTEM 采样方法一样,SYSTEM_TIME 执行块级采样,因此采样并不是完全随机的,可能会受到聚簇效应的影响,特别是在只选取少量行时。
SYSTEM_TIME 不支持
REPEATABLE 子句。
该模块被认为是“受信任的”,也就是说,它可以由在当前数据库上具有 CREATE 权限的非超级用户安装。
F.42.1. 示例
下面是一个使用 SYSTEM_TIME 从表中选取样本的示例。首先安装扩展:
CREATE EXTENSION tsm_system_time;
然后就可以在 SELECT 命令中使用它,例如:
SELECT * FROM my_table TABLESAMPLE SYSTEM_TIME(1000);
这个命令将返回在 1 秒(1000 毫秒)内能够从 my_table 读取到的尽可能大的样本。当然,如果整个表在不到 1 秒内就能读完,则会返回其中所有行。