
# Data Node Scan
#### 算子说明
当GUC参数enable_fast_query_shpping的值设置为on时，优化器会尝试语句下推，将查询语句从CN发送到DN进行执行，然后将执行结果返回给DN。
#### 典型场景
可以下推的查询语句
#### 示例
可以下推的查询
```
--数据准备。
gaussdb=# SET enable_fast_query_shipping=on;
gaussdb=# DROP TABLE IF EXISTS t1;
gaussdb=# CREATE TABLE t1 (id int, number int, grade int);
--执行结果。 
gaussdb=# EXPLAIN SELECT *  FROM t1 where id > 1;
                    QUERY PLAN
--------------------------------------------------
 Data Node Scan  (cost=0.00..0.00 rows=0 width=0)
   Node/s: All datanodes
(2 rows)
```
因为实际计划在DN上生成，若需要查看DN上的执行计划可以设置参数max_datanode_for_plan观察DN上的计划。
```
--打开参数
gaussdb=# SET max_datanode_for_plan = 1;
--执行结果
gaussdb=# EXPLAIN SELECT *  FROM t1 where id > 1;
                             QUERY PLAN
--------------------------------------------------------------------
 Data Node Scan  (cost=0.00..0.00 rows=0 width=0)
   Node/s: All datanodes
 Remote SQL: SELECT id, "number", grade FROM public.t1 WHERE id > 1
 Datanode Name: datanode1
   Seq Scan on t1  (cost=0.00..34.31 rows=648 width=12)
     Filter: (id > 1)
(8 rows)
--删除。
gaussdb=# DROP TABLE IF EXISTS t1;
```
| 信息名称                  | 含义         |
|:---|:---|
| Data Node Scan        | 算子的名称。     |
| Node/s: All datanodes | 表示会下发到所有DN |
   
