检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
为了让这种场合下的查询更具可读性,我们允许另外一种称作"美元符界定"的字符串常量书写办法。一个通过美元符界定声明的字符串常量由一个美元符号($)、零个或多个字符组成的"记号"、另一个美元符号、组成字符串常量的任意字符序列、一个美元符号、与前面相同的记号、一个美元符号组成的。 gaussdb=# SELECT $$it's
使用非初级类型的宿主变量 非初级类型的宿主变量包括数组、typedef、结构体和指针类型的宿主变量。 数组 有两种将数组作为宿主变量的情况。第一种情况是在char[]或者VARCHAR[]中存储一些文本字符串。第二种情况是可在检索多行查询结果时不使用游标。如果不使用数组,则处理多
执行具有输入参数的语句 准备一个普通语句,通过替换参数(在想要替换参数的地方输入问号)执行它的特定版本。使用EXECUTE语句通过USING子句给定参数执行准备语句。示例如下: EXEC SQL BEGIN DECLARE SECTION; const char *stmt
执行带有结果集的语句 执行具有单独结果集的SQL语句,可以使用EXECUTE。若要保存结果,则增加INTO子句。示例如下: EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "SELECT a, b, c FROM test1
指定子查询不展开的Hint 功能描述 数据库在对查询进行逻辑优化时通常会将可以提升的子查询提升到上层来避免嵌套执行,但对于某些本身选择率较低且可以使用索引过滤访问页面的子查询,嵌套执行不会导致性能下降过多,而提升之后扩大了查询路径的搜索范围,可能导致性能变差。对于此类情况,可以使用no_expand
示在当前查询块生效。 dest为参数化路径的目标表,即索引所在的表。 src为参数路径的参数表。 index_list为参数化路径使用的索引序列,为空格隔开的字符串。 示例 nestloop_index示例: 在t1表上传入t2,t3表的t2.c1和t3.c2进行索引扫描(参数化路径):
见指定Hint所处于的查询块Queryblock,可省略,表示在当前查询块生效。 inner_table_list: 执行连接操作时,希望被物化的内表序列,为空格隔开的字符串。 示例 t1表作为内表物化,(t1 t2)的结果作为连接的内表被物化。 gaussdb=# explain (costs
指定子查询不展开的Hint 功能描述 数据库在对查询进行逻辑优化时通常会将可以提升的子查询提升到上层来避免嵌套执行,但对于某些本身选择率较低且可以使用索引过滤访问页面的子查询,嵌套执行不会导致性能下降过多,而提升之后扩大了查询路径的搜索范围,可能导致性能变差。对于此类情况,可以使用no_expand
一个表的候选路径可能包括seq scan和index scan等多个可能的数据扫描方式,最终执行计划使用的表扫描方式是由执行计划的代价来决定的,因此即使生成了索引扫描的候选路径,也可能生成的最终执行计划中使用其它扫描方式。 父主题: SQL调优指南
略,表示在当前查询块生效。 dest为参数化路径的目标表,即索引所在的表。 src为参数路径的参数表。 index_list为参数化路径使用的索引序列,为空格隔开的字符串。 示例 查看下面的计划示例需要设置以下参数: set enable_fast_query_shipping =
@queryblock请参见指定Hint所处的查询块Queryblock章节,可省略,表示在当前查询块生效。 inner_table_list:执行连接操作时,希望被物化的内表序列,为空格隔开的字符串。 示例 t1表作为内表物化,(t1 t2)的结果作为连接的内表被物化。 gaussdb=# explain
IMMEDIATE :stmt; EXECUTE IMMEDIATE可以用于不返回结果集的SQL语句,比如:DDL、INSERT、UPDATE和DELETE语句。但不能用这种方式执行检索数据的语句,比如:SELECT语句。 父主题: 执行动态SQL语句
执行带有结果集的语句 执行具有单独结果集的SQL语句,可以使用EXECUTE。若要保存结果,则增加INTO子句。示例如下: EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "SELECT a, b, c FROM test1
指定子查询不展开的Hint 功能描述 数据库在对查询进行逻辑优化时通常会将可以提升的子查询提升到上层来避免嵌套执行,但对于某些本身选择率较低且可以使用索引过滤访问页面的子查询,嵌套执行不会导致性能下降过多,而提升之后扩大了查询路径的搜索范围,可能导致性能变差。对于此类情况,可以使用no_expand
执行带有结果集的语句 执行具有单独结果集的SQL语句,可以使用EXECUTE。若要保存结果,则增加INTO子句。示例如下: EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "SELECT a, b, c FROM test1
场景一:磁盘满后快速定位存储倾斜的表 首先,通过pg_stat_get_last_data_changed_time(oid)函数查询出近期发生过数据变更的表,鉴于表的最后修改时间只在进行IUD操作的CN记录,要查询库内1天(间隔可在函数中调整)内被修改的所有表,可以使用如下封装函数:
指定子查询不展开的Hint 功能描述 数据库在对查询进行逻辑优化时通常会将可以提升的子查询提升到上层来避免嵌套执行,但对于某些本身选择率较低且可以使用索引过滤访问页面的子查询,嵌套执行不会导致性能下降过多,而提升之后扩大了查询路径的搜索范围,可能导致性能变差。对于此类情况,可以使用no_expand
略,表示在当前查询块生效。 dest为参数化路径的目标表,即索引所在的表。 src为参数路径的参数表。 index_list为参数化路径使用的索引序列,为空格隔开的字符串。 示例 查看下面的计划示例需要设置以下参数 set enable_fast_query_shipping =
见指定Hint所处的查询块Queryblock章节,可省略,表示在当前查询块生效。 inner_table_list: 执行连接操作时,希望被物化的内表序列,为空格隔开的字符串。 示例 t1表作为内表物化,(t1 t2)的结果作为连接的内表被物化。 gaussdb=# explain
一个表的候选路径可能包括seq scan和index scan等多个可能的数据扫描方式,最终执行计划使用的表扫描方式是由执行计划的代价来决定的,因此即使生成了索引扫描的候选路径,也可能生成的最终执行计划中使用其它扫描方式。 父主题: SQL调优指南