Postgresql 中文操作指南
F.47. tsm_system_time — the SYSTEM_TIME sampling method for TABLESAMPLE #
tsm_system_time 模块提供了表格采样方法 SYSTEM_TIME ,可以在 TABLESAMPLE 命令的 SELECT 子句中使用。
此表采样方法接受一个浮点参数,该参数是读取表时要花费的最大毫秒数。这使你可以直接控制查询花费的时间,代价是样本大小难以预测。结果样本将包含在指定时间内可以读取的行数,除非已经完全读取了整个表。
与内置 SYSTEM 采样方法类似,SYSTEM_TIME 执行块级采样,因此样本不是完全随机的,但可能受到聚类效应的影响,尤其是在仅选择很少行的情况下。
SYSTEM_TIME 不支持 REPEATABLE 条款。
此模块被认为是“受信任的”,也就是说,它可以由在当前数据库上具有 CREATE 权限的非超级用户安装。
F.47.1. Examples #
下面是使用 SYSTEM_TIME 选择表样本的示例。首先安装扩展:
CREATE EXTENSION tsm_system_time;
然后,你可以在 SELECT 命令中使用它,例如:
SELECT * FROM my_table TABLESAMPLE SYSTEM_TIME(1000);
此命令将返回 my_table 可以在 1 秒内(1000 毫秒)读取的最大样本。当然,如果可以在 1 秒内读取整个表,则将返回其所有行。