GBASE 8C——SQL参考6 sql语法(12)

本文详细介绍了GBase 8C数据库中的EXECUTE和EXECUTE DIRECT语句,包括它们的功能、语法格式、参数说明及使用示例。EXECUTE用于执行预备语句,而EXECUTE DIRECT则在指定节点上直接执行SQL语句,二者都是数据库操作的重要组成部分。
摘要由CSDN通过智能技术生成
  1. EXECUTE

功能描述

执行一个前面准备好的预备语句。因为一个预备语句只在会话的生命期里存在,那么预备语句必须是在当前会话的前些时候用PREPARE语句创建的。

语法格式

EXECUTE name [ ( parameter [, ...] ) ]

参数说明

  1. name:要执行的预备语句的名字;
  2. parameter:给预备语句的一个参数的具体数值,它必须是一个生成与创建这个预备语句时指定参数的数据类型相兼容的值的表达式;

注意事项

如果创建预备语句的PREPARE语句声明了一些参数,那么传递给EXECUTE语句的必须是一个兼容的参数集,否则就会生成一个错误。

范例

PREPARE insert_customer(int,varchar(200),date,varchar(50)) AS INSERT INTO customer VALUES($1,$2,$3,$4);

PREPARE

EXECUTE insert_customer(11, '马超','20200618',15974236);

INSERT 0 1

语法兼容

SQL 标准包括了一个EXECUTE语句, 但是只被用于嵌入式 SQL。

相关语法

DEALLOCATE,PREPARE

  1. EXECUTE DIRECT

功能描述

在指定的节点上执行SQL语句。

语法格式

EXECUTE DIRECT ON ( nodename [, ... ] )

    query

参数说明

  1. nodename:指定查询的节点名称,指定多个节点时用逗号分隔;
  2. query:要执行查询语句。

注意事项

只有系统管理员才能执行EXECUTE DIRECT。

由于CN节点不存储用户表数据,不允许指定CN节点执行用户表上的SELECT查询。

范例

SELECT * FROM pgxc_node;

 node_name | node_type | node_port |    node_host    | nodeis_primary | nodeis_preferred |   node_

-----------+-----------+-----------+-----------------+----------------+------------------+--------

 cn1       | C         |      5432 | 192.168.142.211 | f              | f                | -117871

 cn3       | C         |      5432 | 192.168.142.213 | f              | f                |  110106

 dn1       | D         |      5433 | 192.168.142.211 | t              | t                |  -56002

 dn2       | D         |      5433 | 192.168.142.212 | f              | f                |   35236

 dn3       | D         |      5433 | 192.168.142.213 | f              | f                |  -70012

(5 rows)

EXECUTE DIRECT ON(dn1) 'select count(*) from t1';

 count

--------

 324900

(1 row)

SELECT COUNT(*) FROM t1;

  count

---------

 1000000

(1 row)

语法兼容

在 SQL 标准中没有定义EXECUTE DIRECT语句。

  1. EXPLAIN

功能描述

显示SQL语句的执行计划。

语法格式

EXPLAIN [ ( option [, ...] ) ] statement

EXPLAIN [ ANALYZE ] [ VERBOSE ] statement

这里option可以是:

    ANALYZE [ boolean ]

    VERBOSE [ boolean ]

    COSTS [ boolean ]

    BUFFERS [ boolean ]

    TIMING [ boolean ]

    SUMMARY [ boolean ]

    FORMAT { TEXT | XML | JSON | YAML }

参数说明

  1. ANALYZE:显示实际运行时间和其他统计数据,默认值为FALSE;
  2. VERBOSE:显示有关计划的额外信息,默认值为FALSE;
  3. COSTS:包括每个规划节点的估计总成本,以及估计的行数和每行的宽度,默认值为TRUE;
  4. BUFFERS:包括缓冲区的使用情况的信息,默认值为FALSE;
  5. NODES:打印query执行的节点信息;
  6. NUM_NODES:打印执行中的节点的个数信息;
  7. TIMING:包括实际的启动时间和花费在输出节点上的时间信息,默认值为TRUE;
  8. SUMMARY:在查询计划之后包含摘要信息(例如,总计的时间信息);
  9. FORMAT:指定输出格式,取值范围:TEXT、XML、JSON或者YAML,默认为TEXT;
  10. boolean:指定被选中的选项是否应该被打开或关闭,可以指定TRUE、ON或1打开,或指定FALSE、OFF或0禁用,缺省情况下默认为TRUE;
  11. statement:指定要分析的SQL语句。

注意事项

在指定ANALYZE选项时,语句会被执行。如果用户想使用EXPLAIN分析INSERT,UPDATE,DELETE,CREATE TABLE AS或EXECUTE语句,而不想改动数据(执行这些语句会影响数据),请使用这种方法:

START TRANSACTION;

EXPLAIN ANALYZE ...;

ROLLBACK;

范例

EXPLAIN SELECT * FROM disttab;

                            QUERY PLAN

------------------------------------------------------------------

 Remote Fast Query Execution  (cost=0.00..0.00 rows=0 width=0)

   Node/s: dn1, dn2, dn3

   ->  Seq Scan on disttab  (cost=0.00..11.70 rows=170 width=426)

(3 rows)

EXPLAIN (FORMAT JSON) SELECT * FROM disttab;

                                                                                                                                                           QUERY PLAN

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------

 [</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值