SET CURRENT QUERY ACCELERATION 语句
SET CURRENT QUERY ACCELERATION 语句用于更改 CURRENT QUERY ACCELERATION 特殊寄存器的值。
调用 SET CURRENT QUERY ACCELERATION
此语句可嵌入应用程序中或者以交互方式发出。 它是可动态准备的可执行语句。
授权 SET CURRENT QUERY ACCELERATION
不需要执行任何操作。
语法 SET CURRENT QUERY ACCELERATION
描述 SET CURRENT QUERY ACCELERATION
- 无
- 指定不执行查询加速。
- ENABLE
- 指定仅当 Db2 确定查询有利时才会加速查询。 如果在查询运行时出现加速器故障,或者加速器返回错误, Db2 将向应用程序返回负SQLCODE。
- 启用(带故障恢复)
- 指定仅当 Db2 确定查询有利时才会加速查询。 如果加速器在 PREPARE 或首次针对查询的 OPEN 期间返回错误,那么 Db2 将在不使用加速器的情况下执行查询。 如果在FETCH或后续OPEN期间,加速器返回错误, Db2 会将错误返回给用户,并且不执行查询。
- 合格
- 指定查询条件符合加速条件时,加速查询。 Db2 不使用成本信息来确定是否加速查询。 不适合加速的查询由 Db2 执行。 如果在查询运行时出现加速器故障,或者加速器返回错误, Db2 将向应用程序返回负SQLCODE。
- 全部
- 指定查询条件符合加速条件时,加速查询。 Db2 不使用成本信息来确定是否加速查询。 不符合加速条件的查询不会由 Db2 执行,并且会返回 SQL 错误。 如果在查询运行时出现加速器故障,或者加速器返回错误, Db2 将向应用程序返回负SQLCODE。例外情况:

- 如果 IBM® Db2 Analytics Accelerator 无法处理动态查询,因为加速器上不存在这些表,则查询通常会失败,并显示错误消息(-4742,原因代码12)。 然而,如果查询仅引用了以下限定符的表格,则由 Db2 处理:
- SYSIBM
- SYSACCEL
- DB2GSE
- SYSXSR
- DGTT
- 动态查询的顶部查询块被删减,因此返回空结果集,由 Db2 处理。 要检查查询是否属于此类,请按以下步骤操作:
- 使用 Db2 的EXPLAIN函数解释查询。 在SQL语句中使用以下特殊注册设置:
SET CURRENT QUERY ACCELERATION = NONE - 查看PLAN_TABLE。 如果已对查询块进行修剪,则查询块的条目在QBLOCK_TYPE列中显示为PRUNED,在ACCESSTYPE列中不显示任何值。
- 使用 Db2 的EXPLAIN函数解释查询。 在SQL语句中使用以下特殊注册设置:

- 如果 IBM® Db2 Analytics Accelerator 无法处理动态查询,因为加速器上不存在这些表,则查询通常会失败,并显示错误消息(-4742,原因代码12)。 然而,如果查询仅引用了以下限定符的表格,则由 Db2 处理:
- 宿主变量
数据类型为CHAR或VARCHAR的变量。 长度不得超过255字节。 有效值为“无”、“启用”、“启用并回退”、“符合条件”或“全部”。 如果宿主变量有一个相关的指示变量,则该指示变量的值不能为空。 宿主变量的值必须靠右对齐,且必须在右边用空格填充。

备注 SET CURRENT QUERY ACCELERATION
设置特殊寄存器值的优先顺序(从低到高)如下:
- QUERY_ACCELERATION子系统参数
- QUERYACCELERATION绑定选项(如果指定)
- 明确的SET CURRENT QUERY ACCELERATION语句

例子 SET CURRENT QUERY ACCELERATION
以下语句将当前查询加速度特殊寄存器设置为“无”,表示不进行任何加速度操作。
SET CURRENT QUERY ACCELERATION NONE;