检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
指定子查询不展开的Hint 功能描述 数据库在对查询进行逻辑优化时通常会将可以提升的子查询提升到上层来避免嵌套执行,但对于某些本身选择率较低且可以使用索引过滤访问页面的子查询,嵌套执行不会导致性能下降过多,而提升之后扩大了查询路径的搜索范围,可能导致性能变差。对于此类情况,可以使用no_expand
使用gsql操作密态数据库 执行SQL语句 执行本节的SQL语句前,请确保已提前生成主密钥,并确认访问主密钥的参数。 本节以完整的执行流程为例,介绍如何使用密态数据库语法,包括三个阶段:使用DDL阶段、使用DML阶段、清理阶段。 连接数据库,并通过-C参数开启全密态开关 gsql
使用gsql操作密态数据库 执行SQL语句 执行本节的SQL语句前,请确保已提前生成主密钥,并确认访问主密钥的参数。 本节以完整的执行流程为例,介绍如何使用密态数据库语法,包括三个阶段:使用DDL阶段、使用DML阶段、清理阶段。 连接数据库,并通过-C参数开启全密态开关 gsql
指定子查询不展开的Hint 功能描述 数据库在对查询进行逻辑优化时通常会将可以提升的子查询提升到上层来避免嵌套执行,但对于某些本身选择率较低且可以使用索引过滤访问页面的子查询,嵌套执行不会导致性能下降过多,而提升之后扩大了查询路径的搜索范围,可能导致性能变差。对于此类情况,可以使用no_expand
no表示hint的scan方式不使用。 @queryblock请参见指定Hint所处于的查询块Queryblock,可省略,表示在当前查询块生效。 table表示hint指定的表,只能指定一个表,如果表存在别名应优先使用别名进行hint。 [index]表示使用indexscan
indexonlyscan只有输出和谓词条件列仅包含索引列才会使用,否则指定时hint不会被使用。 多个表存在等值连接时,仅尝试有等值连接条件的表的连接,此时没有关联条件的表之间的路径将不会生成,所以指定相应的leading,join,rows hint将不使用,例如:t1 t2 t3表join,t1和t2
指定Any子链接提升的Hint 功能描述 在进行Any子链接提升时指定优化算子的方法。 语法格式 [no] hashed_sublink[(@queryblock)] 参数说明 no表示该优化的方式不使用。 @queryblock请参见指定Hint所处的查询块Queryblock
no表示hint的join方式不使用。 table_list为表示hint表集合的字符串,该字符串中的表与join_table_list相同,只是中间不允许出现括号指定join的优先级。 例如: no nestloop(t1 t2 t3)表示:生成t1,t2,t3三表连接计划时,不使用nestloop。三表连接计划可能是t2
为子计划结果进行物化的Hint 功能描述 为子计划结果进行物化,暂存查询记录。只在insert语句应用。 在使用INSERT INTO … SELECT语句插入大量数据且有多行重复值时,因索引需多次对比而导致执行时间过长。使用此HINT对子计划的结果进行物化,暂存查询记录,减少索引比较次数,缩短语句执行时间。
关于并行导出 使用GDS工具将数据从数据库导出到普通文件系统中,适用于高并发、大量数据导出的场景。使用外表做并行导出时,需要开启steam算子后才能够使用GDS工具导出。 概述 通过外表导出数据:通过外表设置的导出模式、导出数据格式等信息来指定待导出的数据文件,利用多DN并行的方式,将
表如果存在别名,需要优先使用别名来表示该表。 join_table_list中指定的表需要满足以下要求,否则会报语义错误。 list中的表必须在当前层或提升的子查询中存在。 list中的表在当前层或提升的子查询中必须是唯一的。如果不唯一,需要使用不同的别名进行区分。 同一个表只能在list里出现一次。
子链接块名的hint Hint的错误、冲突及告警 优化器GUC参数的Hint Custom Plan和Generic Plan选择的Hint 指定子查询不展开的Hint 指定不使用全局计划缓存的Hint 同层参数化路径的Hint 设置慢SQL管控规则的Hint 自适应计划选择的Hint 为子计划结果进行物化的Hint
使用Plan Hint进行调优 Plan Hint调优概述 Join顺序的Hint Join方式的Hint 行数的Hint Stream方式的Hint Scan方式的Hint 子链接块名的hint 运行倾斜的hint 参数化路径的Hint Hint的错误、冲突及告警 Plan Hint实际调优案例
一个频繁使用的索引可以存储在性能稳定且运算速度较快的磁盘上,比如一种固态设备。 一个存储归档的数据,很少使用的或者对性能要求不高的表可以存储在一个运算速度较慢的磁盘上。 管理员通过表空间可以设置占用的磁盘空间,用以在和其他数据共用分区的时候,防止表空间占用相同分区上的其他空间。
table表示为该子链接块hint的别名的名称。 blockname hint仅在对应的子链接块没有提升时才会被上层查询使用。目前支持的子链接提升包括IN子链接提升、EXISTS子链接提升和包含Agg等值相关子链接提升。该hint通常会和前面章节提到的hint联合使用。 对于FROM关键字后的子查询,则需要
在任何gsql客户端登录数据库成功后,可以使用该命令进行数据的导入/导出。但是与SQL的COPY命令不同,该命令读取/写入的文件是本地文件,而非数据库服务器端文件;所以,要操作的文件的可访问性、权限等,都是受限于本地用户的权限。 说明: \COPY只适合小批量、格式良好的数据导入,不会对非法字符做
在任何gsql客户端登录数据库成功后,可以使用该命令进行数据的导入/导出。但是与SQL的COPY命令不同,该命令读取/写入的文件是本地文件,而非数据库服务器端文件;所以,要操作的文件的可访问性、权限等,都是受限于本地用户的权限。 说明: \COPY只适合小批量、格式良好的数据导入,不会对非法字符做
查询改写的Hint 功能描述 优化器支持一系列查询改写规则,可以对SQL语句进行等价的逻辑改写,从而生成更好的执行计划。但在一些场景下,用户并不希望改写SQL语句、或者优化器的改写会导致计划跳变,对于这些特定的场景,需要能够使用hint对改写规则进行控制,让优化器按照特定的方式进行
子链接块名的hint 功能描述 指明子链接块的名称。 语法格式 1 blockname (table) 参数说明 table表示为该子链接块hint的别名的名称。 blockname hint仅在对应的子链接块没有提升时才会被上层查询使用。目前支持的子链接提升包括IN子链接提升
rows(t1 t2 t3 *1000)表示:指定t1, t2, t3 join完的结果集的行数乘以1000。 建议 推荐使用两个表*的hint。对于两个表的采用*操作符的hint,只要两个表出现在join的两端,都会触发hint。例如:设置hint为rows(t1 t2 * 3),对于(t1