• 南大通用GBase8s 常用SQL语句(255)


      1. SET EXPLAIN 语句

    使用 SET EXPLAIN 语句来启用或禁用在当前的会话中查询的记录评估,包括查询优化器的计划、对返回行的数目的估计,以及该查询的相对成本。

    语法

     

    元素

    描述

    限制

    语法

    expression

    返回文件名称规范的表达式

    必须返回满足文件名称限制的字符串

    表达式

    file_name

    说明输出文件名称。如果未包括文件的绝对路径,则会在默认的说明输出文件位置创建说明输出文件

    必须符合操作系统规则。如果该文件已存在,则将说明输出追加在它后面。

    引用字符串 

    file_name_var

    存储文件名称的主变量

    必须为字符数据类型

    特定于语言

    用法

    将来自 SET EXPLAIN ON 语句的输出指向适合的文件,直到您发出 SET EXPLAIN OFF 语句或直到程序结束为止。如果您未输入 SET EXPLAIN 语句,则缺省的行为是 OFF,且数据库服务器不生成查询的评估。

    在数据库服务器优化阶段期间,执行 SET EXPLAIN 语句,当您初始化查询时会发生。对于与游标相关联的查询,如果准备该查询且没有主变量,则当您准备它时发生优化。否则,当您打开游标时,发生优化。

    SET EXPLAIN 语句提供参与执行查询的工作的多种评估。

    选项              作用

    ON               为每一随后的查询生成评估并将结果写到当前目录中的输出文件。如果给文件已存在,则将新的输出追加到现有的文件之后。

    AVOID_EXECUTE 防止 SELECT、INSERT、MERGE、UPDATE 或 DELETE 语句执行。数据库服务器将查询计划打印到输出文件

    OFF              终止 SET EXPLAIN 语句的活动,以便于不再生成随后的查询的评估或写到输出文件

    FILE TO          为每一随后的查询生成评估,并允许您指定说明输出文件的位置。

    下列示例为当前会话中随后的查询将查询计划写到说明输出文件中:

    SET EXPLAIN ON;

    下列示例将查询计划追加写到当前会话中的文件:

    SET EXPLAIN OFF;

    使用 AVOID_EXECUTE 选项

    AVOID_EXECUTE 关键字防止 DML 语句执行。相反,数据库服务器将查询计划打印到输出文件。

    SET EXPLAIN ON AVOID_EXECUTE 语句为会话激活 Avoid Execute 选项,或直到下一不带 AVOID_EXECUTE 的 SET EXPLAIN OFF(或 ON)为止。如果您为包含远程表的查询激活 AVOID_EXECUTE,则该查询既不在本地也不在远程站点执行。

    下列示例在指定的文件中存储输出。

    SET EXPLAIN ON AVOID_EXECUTE;

    SET EXPLAIN FILE TO '/tmp/explain.out';

    当设置 AVOID_EXECUTE 时,数据库服务器发出警告消息。如果您正在使用 DB-Access,则它为任何选择、删除、更新或插入查询操作显示文本消息。

    Warning! avoid_execute has been set

    对于 ESQL,sqlwarn.sqlwarn7 字符设置为 'W'。

    使用 SET EXPLAIN ON 或 SET EXPLAIN OFF 语句来关闭 AVOID_EXECUTE 选项。SET EXPLAIN ON 语句关闭 AVOID_EXECUTE 选项,但继续生成查询计划并将结果写到输出文件。

    如果您在 SPL 例程中发出 SET EXPLAIN ON AVOID_EXECUTE 语句,则该 SPL 例程和任何 DDL 语句仍然执行,但在该 SPL 例程内部的 DML 语句不执行。数据库服务器将该 SPL 例程的查询计划打印到输出文件。要关闭此选项,您必须在该 SPL 例程的外部执行 SET EXPLAIN ON 或 SET EXPLAIN OFF 语句。如果您在执行 SPL 例程之前执行 SET EXPLAIN ON AVOID_EXECUTE 语句,则在该 SPL 例程内部的 DML 语句不执行,且数据库服务器不将该 SPL 例程的查询计划打印到输出文件。

    当 AVOID_EXECUTE 生效时,仍然对查询中的恒定函数求值,因为数据库服务器在优化之前计算这些函数。

    例如,即使不执行下列 SELECT 语句,也对 func( ) 函数求值:

    SELECT * FROM orders WHERE func(10) > 5;

    要了解 AVOID_EXECUTE 选项的其他性能影响,请参阅 GBase 8s 性能指南

    如果您在 GBase 8s ESQL/C 程序中打开游标之前执行 SET EXPLAIN ON AVOID_EXECUTE 语句,则每一 FETCH 操作都返回找不到行的消息。然而,如果您在 GBase 8s ESQL/C 程序打开游标之后执行 SET EXPLAIN ON AVOID_EXECUTE,则此语句对游标不起作用,其继续返回行。

  • 相关阅读:
    2022年8月阿里最新修订发布Spring Cloud学习笔记 ,榜首当之无愧
    pip install xxx 出现 AttributeError: ‘tuple’ object has no attribute ‘read’ 错误
    增值税常见的税务筹划方法,干货!收藏!
    剑指Offer 09.用两个栈实现队列
    嵌入式算法17---SHA256哈希算法
    最新全流程GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟教程
    1668、最大重复子字符串(暴力+KMP+strstr)
    【音视频流媒体】4、摄像头:分辨率、光圈|快门|感光度、焦距
    更快更强,Claude 3全面超越GPT4,能归纳15万单词
    Vue在外部配置打包文件夹名称和url地址前缀
  • 原文地址:https://blog.csdn.net/m0_67317773/article/details/126932193