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