更新时间:2024-12-30 GMT+08:00
分享

子链接块名的hint

功能描述

指明子链接块的名称。

语法格式

1
blockname ([@block_name] table)

注意事项

  • block_name hint仅在对应的子链接块提升时才会被上层查询使用。目前支持的子链接提升包括IN子链接提升、EXISTS子链接提升和包含Agg等值相关子链接提升。该hint通常会和前面章节提到的hint联合使用。
  • 对于FROM关键字后的子查询,则需要使用子查询的别名进行hint,block_name hint不会被用到。
  • 如果子链接中含有多个表,则提升后这些表可与外层表以任意优化顺序连接,hint也不会被用到。

参数说明

  • block_name表示语句块的block_name,详细说明请参考block_name
  • table表示为该子链接块hint的别名的名称。
    • 表的语法格式如下:

      [schema.]table[@block_name]

      表名可以带schema,也可以带所在子查询语句块提升前的block_name。子查询语句块在优化器进行优化重写时发生提升,则该block_name会与leading中block_name不同。

    • 表如果存在别名,优先使用别名来表示该表。

示例

1
explain select /*+nestloop(store_sales tt) */ * from store_sales where ss_item_sk in (select /*+blockname(tt)*/ i_item_sk from item group by 1);

该hint表示:子链接的别名为tt,提升后与上层的store_sales表关联时使用nestloop。生成计划如下所示:

相关文档

    提示

    您即将访问非华为云网站,请注意账号财产安全