暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBASE数据库提升执行效率,在循环中使用 PREPARE 语句和 EXECUTE 语句

三金先生 2023-08-23
240

除了在 在单一语句准备中受限的语句 中罗列的作为例外的语句,您不可在多语句的准备好的对象 的文本中使用下列语句:

⚫ CLOSE DATABASE

⚫ CREATE DATABASE

⚫ DATABASE

⚫ DROP DATABASE

⚫ RENAME DATABASE

⚫ SELECT(随同一个例外)

在多语句准备中,下列语句的类型也是无效的:

⚫ 在执行多语句序列期间可导致当前数据库关闭的语句

⚫ 包括对 TEXT 或 BYTE 主变量引用的语句

通常,您在多语句准备中不可使用 SELECT 语句。唯一在多语句准备中被允许的 SELECT 语句的 形式为带有 INTO 临时表子句的 SELECT 语句。

为了效率而使用准备好的语句

要提高执行效率,您可在循环中使用 PREPARE 语句和 EXECUTE 语句,来消除冗余解析和优化 所引起的开销。例如,每次循环运行时,都解析位于 WHILE 循环内的 UPDATE 语句。如果您在 该循环之外准备 UPDATE 语句,则仅解析该语句一次,消除开销并提高了语句执行的速度。下列 示例展示如何准备一 GBase 8s ESQL/C 语句来提高性能:

EXEC SQL BEGIN DECLARE SECTION; char disc_up[80]; int cust_num; EXEC SQL END DECLARE SECTION; main() { sprintf(disc_up, "%s %s","update customer ", "set discount = 0.1 where customer_num = ?"); EXEC SQL prepare up1 from :disc_up; while (1) { printf("Enter customer number (or 0 to quit): "); scanf("%d", cust_num); if (cust_num == 0) break; EXEC SQL execute up1 using :cust_num; } }

GBase 8s SQL 指南:语法 南大通用数据技术股份有限公司 595

如同 SQL 语句高速缓存一样,准备好的语句可降低重新优化同一查询计划的频度,从而节约在一 些上下文中的资源。准备好的语句和语句高速缓存 部分讨论综合地使用准备好的 DML 语句、游 标和 SQL 语句高速缓存或提升查询性能的替代技术。 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论