返回首页

gbase数据、南大通用产品文档:GBase8aGBase 8a ODBC 简介

更新日期:2024年09月11日

GBase 8a ODBC 是GBase 数据库的ODBC 驱动程序,通过GBase 8a ODBC 驱
动可以访问所有GBase 数据库。GBase 8a ODBC 支持ODBC 3.5X 一级规范 (全
部API + 2 级特性)

两个行集的相交产生一个表。
它包含同时存在两个原始表的行。
使用关键字 EXISTS 或 IN
来引入显示两个集合相交的子查询。下图说明了相交集合运算。
图: 相交集合运算


以下查询是一个嵌套 SELECT 语句的示例,它显示了 stock 和 items 表的交集。该结果包
含出现在这两个集合中的所有元素并返回以下行。
图: 查询
SELECT stock_num, manu_code, unit_price FROM stock
WHERE stock_num IN
(SELECT stock_num FROM items)
ORDER BY stock_num;
图: 查询结果
stock_num manu_code unit_price

1 HRO $250.00
1 HSK $800.00
1 SMT $450.00
2 HRO $126.00
3 HSK $240.00

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 154 -

3 SHM $280.00

306 SHM $190.00
307 PRC $250.00
309 HRO $40.00
309 SHM $40.00

当指定如下hint 函数时,from 子查询的结果先保存到临时表中,再被后续查询使
用。
hint 函数名:grouped
功能:指定结果集重分布方式
取值:[-10|-2|-1|投影列下标列表]
默认值:-10
说明:
-10 表示保持结果集分布属性不变;
-2 表示结果集拉复制表;
-1 表示结果集RoundRobin 分布;
投影列下标从0 开始,所以投影列下标列表表示为大于等于0 的1 个或多个值,
中间用逗号间隔,
结果集按列标指定的列进行hash 重分布。
如果有下标超出投影
列范围则hint 无效。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1311
select /*+grouped('-10')*/ ...... 子查询结果不进行重分布,按原样存储
select /*+grouped('-2')*/ ...... 子查询结果拉复制表
select /*+grouped('2')*/ ...... 子查询结果按投影列第3 列进行hash 重分布
select /*+grouped('2,3')*/ ...... 子查询结果按投影列第3、4 列进行hash 重分布
注意:
1.from 子查询展开后将不再存在时,如果指定了hint,则不再展开
2.from 子查询被投影列剪枝时,
如果hint 指定了hash 重分布,
则不再进行剪枝优

如:
select * from (select /*+grouped('-2')*/ * from x1) xx, x2 where xx.id2=x2.id4;
如果没有hint,则xx 会先进行hash 重分布,然后与x2 进行join,hint 指定了xx
拉复制表后,计划变成xx 拉复制表,然后与x2 进行join。