支持的版本: 当前 (17) / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5

F.45. tsm_system_time — TABLESAMPLESYSTEM_TIME 抽样方法 #

tsm_system_time 模块提供了表抽样方法 SYSTEM_TIME,它可以在 SELECT 命令的 TABLESAMPLE 子句中使用。

此表抽样方法接受一个浮点参数,该参数是读取表所花费的最大毫秒数。这使您可以直接控制查询所需的时间,但代价是样本的大小变得难以预测。除非首先读取了整个表,否则生成的样本将包含在指定时间内可以读取的尽可能多的行。

与内置的 SYSTEM 抽样方法一样,SYSTEM_TIME 执行块级抽样,因此样本不是完全随机的,但可能会受到聚类效应的影响,尤其是在仅选择少量行时。

SYSTEM_TIME 不支持 REPEATABLE 子句。

此模块被认为是可信的,也就是说,拥有当前数据库 CREATE 权限的非超级用户可以安装它。

F.45.1. 示例 #

这是一个使用 SYSTEM_TIME 选择表样本的示例。首先安装扩展:

CREATE EXTENSION tsm_system_time;

然后您可以在 SELECT 命令中使用它,例如:

SELECT * FROM my_table TABLESAMPLE SYSTEM_TIME(1000);

此命令将返回 my_table 的尽可能大的样本,该样本可以在 1 秒(1000 毫秒)内读取。当然,如果整个表可以在 1 秒内读取,则将返回其所有行。

提交更正

如果您在文档中发现任何不正确、与特定功能的使用体验不符或需要进一步澄清的地方,请使用此表单报告文档问题。