返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

Scan 方式的Hint
功能描述
指明scan 使用的方法,可以是tablescan、indexscan 和indexonlyscan。
语法格式
[no] tablescan|indexscan|indexonlyscan(table [index])
参数说明

no 表示hint 的scan 方式不使用。

table 表示hint 指定的表,只能指定一个表,如果表存在别名应优先使用别名进行hint。

index 表示使用indexscan 或indexonlyscan 的hint 时,指定的索引名称,当前只能指定
一个。
对于indexscan 或indexonlyscan,只有hint 的索引属于hint 的表时,才能使用该hint。
scan hint 支持在行列存表、obs 表、子查询表上指定。
示例
为了hint 使用索引扫描,需要首先在表item 的i_item_sk 列上创建索引,名称为i。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
573
create index i on item(i_item_sk);
对示例中原语句使用如下hint:
explain
select /*+ indexscan(item i) */ i_product_name product_name ...
该hint 表示:item 表使用索引i 进行扫描。生成计划如下所示:

参数说明:设置autoanalyze 的超时时间。在对某张表做autoanalyze 时,如果该表的
analyze 时长超过了autoanalyze_timeout,则自动取消该表此次analyze。
该参数属于SIGHUP 类型参数,
请参考表GUC 参数设置方式中对应设置方法进行设置。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1314
取值范围:整型,0~2147483,单位是秒。
默认值:5min(即300s)

为j 值相同,
所以avg 值相同,
计算过程为avg = (8 + 4 + 6) / 3 = 6,
i=2,
j=1,
k=4
时,avg=5.5,计算过程为avg = (8 + 4 + 6 + 4) / 4 = 5.5。
示例2:AVG(DISTINCT k) OVER(PARTITION BY i)
gbase> SELECT *,AVG(DISTINCT k) OVER(PARTITION BY i) AS avg
FROM t1;
+------+------+------+--------+
| i
| j
| k
| avg
|
+------+------+------+--------+
|
2 |
3 |
6 | 6.0000 |
|
2 |
3 |
4 | 6.0000 |
|
2 |
5 |
8 | 6.0000 |
|
2 |
1 |
4 | 6.0000 |
|
3 |
2 |
2 | 5.0000 |
|
3 |
2 |
4 | 5.0000 |
|
3 |
2 |
2 | 5.0000 |
|
3 |
4 |
6 | 5.0000 |
|
3 |
1 |
2 | 5.0000 |
|
3 |
5 |
8 | 5.0000 |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
898
+------+------+------+--------+
10 rows in set
用例分析:首先根据i 分组,由于没有ORDER BY 部分,则同组内的累加和、
COUNT 值都相等,将同组内的k 值进行累加同时计算COUNT 值,如果遇到不
同组,从0 重新开始。
以i 值为2、2、2、2,j 值为5、3、3、1,k 值为8、4、6、4,avg 值为6、6、6、
6 为例,因为在这4 组数值中,不同的k 值为6、4、8,所以avg= (6 + 4 + 8) / 3 =
6。