返回首页

gbase数据、南大通用产品文档:GBase8s提高单线程应用程序的性能

更新日期:2024年09月11日

可以通过使用 SINGLETHREADED 连接参数,提升单线程应用程序的性能。缺省情况
下,该值为 off。
请不要在 XA/MSDTC 环境中使用此参数。
可在连接字符串中设置 SINGLETHREADED
连接参数,如下列示例所示:
DSN=xxx;Uid=xxx;Pwd=xxx;SINGLETHREADED=1;"

参数说明:控制表空间是否可以使用绝对路径。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:布尔型

on 表示可以使用绝对路径。

off 表示不可以使用绝对路径。
默认值:on

要完成 GROUP BY 子句,使用 HAVING 子句来在构成组之后将一个或多个限制条件应
用于这些组。HAVING 子句对组的影响类似于 WHERE 子句限定个别行的方式,使用
HAVING 子句的一个优点是可以在搜索条件中包括聚集,而在 WHERE 子句的搜索条件
中去不能包含聚集。
每个 HAVING 条件将组的一列或一个聚集表达式与组的另一个聚集表达式或与常量作比
较。可以使用 HAVING 来对列值或组列表中的聚集值设置条件。
下列查询返回具有两个商品以上的订单上每个商品的平均总价格。
HAVING 子句在每个组
构成时测试每个组,并选择由两行以上构成的那些组。
图: 查询

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

SELECT order_num, COUNT(*) number, AVG (total_price) average
FROM items
GROUP BY order_num
HAVING COUNT(*) > 2;
图: 查询结果
order_num number average

1003 3 $319.67
1004 4 $354.00
1005 4 $140.50
1006 5 $89.60
1007 5 $339.20
1013 4 $35.95
1016 4 $163.50
1017 3 $194.67
1018 5 $226.20
1021 4 $403.50
1022 3 $77.33
1023 6 $137.33
如果使用不带 GROUP BY 子句的 HAVING 子句,那么 HAVING 条件应用于满足搜索
条件的所有行。也就是说,满足搜索条件的所有行组成了一个组。
下列查询(图 1的修改版本)只返回一行,即表中所有 total_price 值的平均数,如下所示。

图: 查询
SELECT AVG (total_price) average
FROM items
HAVING count(*) > 2;
图: 查询结果
average

$270.97
如果图 3与图 1一样,在 Projection 子句中包含了非聚集列 order_num ,那么必须将
GROUP BY 子句与组列表中的列包含子啊一起。此外,如果不满足 HAVING 子句中的条
件,那么输出将显示列标题以及一条消息指示没有找到任何行。
下列查询包含可以在 GBase 8s 版本的交互 SQL 中使用的所有 SELECT 语句子句(命名
主变量的 INTO 子句只在 SQL API 中可用)。

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

图: 查询
SELECT o.order_num, SUM (i.total_price) price,
paid_date - order_date span
FROM orders o, items i
WHERE o.order_date > '01/01/98'
AND o.customer_num > 110
AND o.order_num = i.order_num
GROUP BY 1, 3
HAVING COUNT (*) < 5
ORDER BY 3
INTO TEMP temptab1;
该查询连接 orders 和 items 表;使用显示标号、表列名和用作列指示符的整数;对数据进行
分组和排序;并将结果放置在临时表中,如下所示。
图: 查询结果
order_num price span

1017 $584.00
1016 $654.00
1012 $1040.00
1019 $1499.97 26
1005 $562.00 28
1021 $1614.00 30
1022 $232.00 40
1010 $84.00 66
1009 $450.00 68
1020 $438.00 71