更新时间: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=# DROP TABLE IF EXISTS t1; 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 ------------------------------------------------------------- Streaming (type: GATHER) (cost=0.06..4.11 rows=2 width=32) Node/s: All datanodes -> Sample Scan on t1 (cost=0.00..4.02 rows=2 width=32) Sampling: system (10::real) (4 rows) --删除。 gaussdb=# DROP TABLE t1;
上述示例中,Sample Scan算子输出信息如下所示。
信息名称 |
含义 |
---|---|
Sample Scan |
算子的名称。 |
Sampling |
算子采样的方式,示例中采用system 作为采样方法,采样的比例为10% |
父主题: 表访问方式