TABLESAMPLE 的 SYSTEM_ROWS 采样方法 #
tsm_system_rows 模块提供表采样方法 SYSTEM_ROWS,该方法可用于 SELECT 命令的 TABLESAMPLE 子句。
该表采样方法接受一个整数参数,表示要读取的最大行数。所得样本总是恰好包含指定数量的行;如果表中没有足够的行,则选中整个表。
与内置的 SYSTEM 采样方法一样,SYSTEM_ROWS 执行块级采样,因此样本并非完全随机,可能受到聚簇效应的影响,在仅请求少量行时尤为明显。
SYSTEM_ROWS 不支持 REPEATABLE 子句。
该模块被视为“可信”模块,也就是说,拥有当前数据库 CREATE 权限的非超级用户也可以安装它。
下面是使用 SYSTEM_ROWS 对表进行采样的示例。首先安装扩展:
CREATE EXTENSION tsm_system_rows;
然后即可在 SELECT 命令中使用,例如:
SELECT * FROM my_table TABLESAMPLE SYSTEM_ROWS(100);
该命令将从表 my_table 返回一个 100 行的样本(如果表中可见行数不足 100,则返回其所有行)。