更新时间:2025-03-13 GMT+08:00

Sample Scan

算子说明

Sample Scan是一种扫描表的方式,它可以在查询过程中随机地从表中抽取一部分数据进行查询,而不是扫描整个表。Sample Scan配合TABLESAMPLE关键字使用,使用方式为[ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ]。这种技术通常用于大型表或者需要随机抽样的查询场景,可以提高查询效率。

典型场景

当查询时使用tablesample语法,sampling_method使用system或bernoulli 。

示例

示例:采样查询

--数据准备。
gaussdb=# CREATE TABLE t1 (c1 number, c2 number, c3 number); 
CREATE TABLE 
gaussdb=# INSERT INTO t1 VALUES (generate_series(1,100), 2, 3); 
INSERT 0 100

--执行结果。 
gaussdb=# EXPLAIN SELECT c1 FROM t1 tablesample system(10); 
                     QUERY PLAN                      
---------------------------------------------------- 
 Sample Scan on t1  (cost=0.00..272.00 rows=10000 width=6)
   Sampling: system (10::real)
(2 rows)

--删除。
gaussdb=# DROP TABLE t1;

上述示例中,Sample Scan算子输出信息如下所示。

信息名称

含义

Sample Scan

算子的名称。

Sampling

算子采样的方式,示例中采用system 作为采样方法,采样的比例为10%