SYSTEM_TIME
用于 TABLESAMPLE
的采样方法 #tsm_system_time
模块提供了表采样方法 SYSTEM_TIME
,该方法可用于 SELECT
命令的 TABLESAMPLE
子句中。
此表抽样方法接受单个浮点参数,该参数是要用于读表的毫秒数上限。这使你可以直接控制查询需要花费多长时间,但相应的样本大小将很难预测。生成的样本将包含指定时间内可以读取的行数,除非整张表已被首先读取。
如同内置 SYSTEM
抽样方法,SYSTEM_TIME
执行块级抽样,因此样本并非完全随机,但可能会受到聚类效果的影响,特别是如果只选择了少量的行。
SYSTEM_TIME
不支持 REPEATABLE
子句。
此模块被认为是 “可信” 的,也就是说,它可以被具有当前数据库的 CREATE
权限的非超级用户安装。
下面是使用 SYSTEM_TIME
来选择表样本的示例。首先安装扩展
CREATE EXTENSION tsm_system_time;
然后你可以在 SELECT
命令中使用它,例如
SELECT * FROM my_table TABLESAMPLE SYSTEM_TIME(1000);
此命令将返回一个 my_table
样本,该样本尽可能大,可以在 1 秒(1000 毫秒)内读取。当然,如果整张表可以在 1 秒内读取,那么它的所有行都将被返回。