GaussDB-Scan方式的Hint

59 阅读2分钟

GaussDB-Scan方式的Hint

功能描述

指明scan使用的方法,可以是tablescan、indexscan、indexonlyscan、gsi或者gsitable。

语法格式

| ``` [no] tablescan|indexscan|indexonlyscan|gsi|gsitable( [@queryblock] table [index])

| ------------------------------------------------------------------------------------------ |

#### 参数说明

-   no表示hint的scan方式不使用。
-   @queryblock请参见[指定Hint所处的查询块Queryblock](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0272.html#ZH-CN_TOPIC_0000001911585745)章节,可省略,表示在当前查询块生效。

<!---->

-   table表示hint指定的表,只能指定一个表,如果表存在别名应优先使用别名进行hint。
-   index表示使用indexscan、indexonlyscan、gsi以及gsitable的hint时,指定的索引名称,当前只能指定一个。

![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/3646047eddee45b0aab261424c9b7340~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1772003154&x-signature=dSSdqbw%2FmmeQBc9QmOqoVP5bjvw%3D)

-   对于indexscan、indexonlyscan或gsi,只有hint的索引属于hint的表时,才能使用该hint。
-   scan hint支持在行存表、子查询表上指定。
-   indexonlyscan的计划能够被indexscan的hint产生,但indexonly的hint只能产生indexonly的计划。
-   indexscan兼容indexonlyscan时可能带来一些计划变化,使用cost_model_version进行逃生,通过cost_model_version可以控制是否兼容,在大于2或者等于0时生效。
-   在满足查询可以使用GSI的前提下,使用gsi的hint将产生使用全局二级索引的index only scan查询计划,而不会产生使用普通索引的查询计划。
-   在满足查询可以使用GSI回表的前提下,使用gsitable的hint将产生使用全局二级索引的回表查询计划。
-   对于gsi的hint,若没有给定queryblock、table以及index,则此gsi的hint支持跨queryblock。
-   如需使用gsitable的hint,则需要打开enable_stream_operator参数,否则hint不生效。
-   支持直接在数据节点查询有效的全局二级索引。

#### 示例

为了hint使用索引扫描,需要首先在表item的i_item_sk列上创建索引,名称为i。

| ```
create index i on item(i_item_sk); 
``` |
| ------------------------------------------- |

对[示例](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0271.html#ZH-CN_TOPIC_0000001911666285__zh-cn_topic_0000001656058848_section671421102912)中原语句使用如下hint:

| ```
explain select /*+ indexscan(item i) */ i_product_name product_name ... 
``` |
| -------------------------------------------------------------------------------- |

该hint表示:item表使用索引i进行扫描。生成计划如下所示:

![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/d6d036a51804416ea7bdc649791e1323~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1772003154&x-signature=bcLIf1ruBvfMpo1vfD9R2Bow2aE%3D)

更多详情请参考GaussDB 文档中心:<https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html>