dsn_function_table

函数表 DSN_FUNCTION_TABLE 包含特定 SQL 语句中使用的函数的描述。

开始特定程序编程接口信息。
建议 :不要手动将数据插入系统维护的EXPLAIN表中,删除过期的EXPLAIN表数据时也要小心。 数据仅适用于 Db2 解释函数和优化工具。 某些优化工具依赖于各种EXPLAIN表的实例。 请注意不要删除为这些工具创建的EXPLAIN表中的数据或实例。

限定符:

更改开始您的子系统或数据共享组可以包含多个这些表,它们由用户ID限定。 当您发出EXPLAIN语句或绑定时,这些表格中会显示成本信息。 当您在BIND或REBIND命令中指定EXPLAIN(YES)或EXPLAIN(ONLY)时,也会填充这些信息。 SQL优化工具还可以创建由用户ID限定的EXPLAIN表。 您可以在SDSNSAMP库的成员DSNTESC中找到创建这些表实例的SQL语句。更改结束

CREATE TABLE语句示例

前缀.SDSNSAMP 库的成员DSNTESC中,您可以找到每个EXPLAIN表的CREATE TABLE语句示例。 要将 EXPLAIN 表升级为当前 Db2 的格式,可以调用存储过程 ADMIN_EXPLAIN_MAINT。 ADMIN_EXPLAIN_MAINT 还可以创建 EXPLAIN 表,将其升级为当前 Db2 版本的格式,或完成其他维护任务。 有关使用操作输入参数请求上述各项任务的信息,请参阅存储过程 ADMIN_EXPLAIN_MAINT。 另外,如果只想执行将 EXPLAIN 表升级为当前 Db2 格式的任务,可以运行任务 DSNTIJXA。 DSNTIJXA 调用 REXX 执行程序 DSNTXTA 来执行升级。 有关运行 DSNTIJXA 的更多信息,请参阅迁移步骤 25:将 EXPLAIN 表转换为当前格式

列描述

开始特定程序编程接口信息。

下表描述了DSN_FUNCTION_TABLE的列。

表 1. DSN_FUNCTION_TABLE中列的描述
列名 数据类型 描述
QUERYNO 整数,非空, 默认值 用于标识所解释语句的数字。 价值的来源取决于行文语境:
对于EXPLAIN语句生成的行
QUERYNO子句中指定的数字,它是SELECT、INSERT、UPDATE、MERGE和DELETE语句语法中的可选部分。
对于EXPLAIN语句未生成的行
Db2 根据源程序中SQL语句的行号分配一个编号。

当QUERYNO的值基于源程序中的语句编号时,超过32767的值将报告为0。 然而,在极少数情况下,价值无法保证独一无二。

更改开始当SQL语句嵌入到已编译的SQL函数、本机SQL过程或高级触发器中时,如果指定了QUERYNO子句,则其值将由 Db2 使用。 否则, Db2 会根据已编译的SQL函数、原生SQL过程或高级触发器中的SQL语句行号分配一个编号。更改结束

QBLOCKNO 整数,非空,默认值 一个用于识别查询中每个查询块的编号。 编号值没有特定顺序,也不一定连续。
APPLNAME varchar(24) not null ,带默认值 该行应用程序计划的名称。 仅适用于从计划中执行的嵌入式EXPLAIN语句,或绑定计划时解释的语句。 空白表示该列不适用。

更改开始当SQL语句嵌入到已编译的SQL函数、原生SQL过程或高级触发器中时,此列将不使用,且为空。更改结束

PROGNAME varchar(128) not null ,带默认值 包含待解释语句的程序或软件包的名称。 仅适用于嵌入式EXPLAIN语句以及绑定计划或包的结果的语句。 空白表示该列不适用。

更改开始当SQL语句嵌入到已编译的SQL函数或本机SQL程序中时,此列将显示已编译的SQL函数或本机SQL程序的特定名称。 当SQL语句嵌入高级触发器中时,此列包含触发器的名称。更改结束

COLLID varchar(128) not null ,带默认值 收藏编号:
“DSNDYNAMICSQLCACHE”
该行源自动态语句缓存。
“DSNEXPLAINMODEYES”
该行源自一个应用程序,该应用程序为特殊寄存器“当前解释模式”的值指定了“是”。
“DSNEXPLAINMODEEXPLAIN”
该行源于一个应用程序,该应用程序为特殊寄存器CURRENT EXPLAIN MODE的值指定了EXPLAIN。

更改开始当SQL语句嵌入到已编译的SQL函数、本机SQL过程或高级触发器中时,此列将显示已编译的SQL函数、本机SQL过程或高级触发器的架构名称。更改结束

GROUP_MEMBER varchar(24) not null ,带默认值 执行EXPLAIN命令的 Db2 的成员名称。 如果在执行EXPLAIN时, Db2 子系统不在数据共享环境中,则该列为空。
EXPLAIN_TIME 时间戳不可为空 ,默认值 EXPLAIN信息捕获的时间:
所有缓存语句
当语句以全精度时间戳值的形式进入缓存时。
非缓存静态语句
当语句被绑定时,以精确的时间戳值的形式。
非缓存动态语句
当EXPLAIN被执行时,其值相当于用4个零补足的时间的CHAR(16)表示形式。
SCHEMA_NAME varchar(128) not null,带默认值 在解释语句中调用的函数的模式名称。
功能_名称 varchar(128) not null,带默认值 解释语句中调用的函数名称。
SPEC_FUNC_NAME varchar(128) not null,带默认值 在解释语句中调用的函数的特定名称。
FUNCTION_TYPE char(2) not null,带默认值 解释语句中调用的函数类型。 可能的值包括:
CU
列功能
服务单位
标量函数
TU
表函数
查看创建者 varchar(128) not null,带默认值 如果视图定义中引用了FUNCTION_NAME列中指定的函数,则该视图的创建者。 否则,空白。
查看名称 varchar(128) not null,带默认值 如果在视图定义中引用了 FUNCTION_NAME 列中指定的函数,则显示视图的名称。 否则,空白。
路径 varchar(2048) not null,带默认值 用于解析函数模式名称的SQL路径值。
功能文本 varchar(1500) not null,带默认值 函数引用的文本(函数名称和参数)。 如果函数参考超过100字节,则此列包含前100字节。 对于以中缀表示的函数,FUNCTION_TEXT仅包含函数名称。 例如,对于重载 SQL 除法运算符的名为 / 的函数,如果函数引用是 A/B,则 FUNCTION_TEXT 仅包含 /。
FUNC_VERSION varchar(122) not null,带默认值 对于非内联SQL标量函数的版本,此列包含版本标识符。 对于其他所有情况,此列包含一个零长度字符串。 非内联SQL标量函数的版本在 SYSIBM.SYSROUTINES 表中定义,其中ORIGIN='Q'、FUNCTION_TYPE='S'、INLINE='N',VERSION列包含版本标识符。
SECURE char(1) not null,带默认值 用户自定义功能是否安全。
SECTNOI 整数,非空,默认值 语句的节号。 该值取自SYSPACKSTMT或SYSSTMT表中的同一列,可用于连接表,重建语句的访问路径。 本专栏仅适用于静态陈述。 -1 的默认值表示在 DB2® 9 或更早版本中捕获的EXPLAIN信息。
版本 varchar(122) not null ,带默认值 软件包的版本标识符。 仅适用于从包中执行的嵌入式EXPLAIN语句,或绑定包时解释的语句。

更改开始如果值不为空,则该值与用于创建此EXPLAIN表行的软件包的VERSION值相同。更改结束

更改开始以下语句的值是空白的:更改结束更改开始
  • 基本触发器(TYPE='T')的包
  • 一个应用程序的包,该应用程序在预编译时没有SQL处理选项版本
  • 一个预先编译的包,其中版本值(TYPE=blank)为空字符串
更改结束 更改开始当SQL语句嵌入到已编译的SQL函数或本机SQL程序中时,此列将显示函数或程序的版本标识符。 当SQL语句嵌入到高级触发器主体中时,此列将不使用且为空。更改结束
EXPANSION_REASON char(2) not null,带默认值
本专栏仅适用于引用历史数据表或临时数据表的陈述。 对于其他陈述,此栏为空白。

指示当前临时业务时间特殊寄存器、当前临时系统时间特殊寄存器和 SYSIBMADM.GET_ARCHIVE 内置全局变量的效果。 这些项目受“车身敏感”、“系统敏感”和“档案敏感”绑定选项控制。

Db2 如果以下条件之一为真,则隐式地在查询中添加某些语法:
  • SYSIBMADM.GET_ARCHIVE 全局变量设置为Y,ARCHIVESENSITIVE绑定选项设置为YES
  • 当前临时业务_时间特殊寄存器不为空,且BUSTIMESENSITIVE绑定选项设置为YES
  • 当前时间系统_时间特殊寄存器不为空,且系统时间敏感绑定选项设置为是
此列可以有以下值之一:
“A”
查询包含隐式查询转换,这是 SYSIBMADM.GET_ARCHIVE 内置全局变量的结果。
“B”
查询包含隐式查询转换,这是当前临时业务时间特殊寄存器的结果。
'S'
查询包含隐式查询转换,这是当前临时系统时间特殊寄存器的结果。
“SB”
查询包含隐式查询转换,这是当前临时系统时间特殊寄存器和当前临时业务时间特殊寄存器的结果。
空白
查询不包含隐式查询转换。
更改开始 PER_STMT_ID 更改结束 更改开始 bigint not null 更改结束 更改开始 Db2 目录表中SQL语句的持久性语句标识符。
例如,此列对应于以下目录表列,用于识别 SQL 语句:
  • STMT_ID in SYSIBM.SYSPACKSTMT ,用于包中的SQL语句。
  • SDQ_STMT_ID in SYSIBM.SYSDYNQUERY ,用于稳定的动态SQL语句。
更改结束
更改开始AP_PLANID更改结束 更改开始字符串(16)用于位数据更改结束 更改开始用于唯一标识SQL语句的BIND或PREPARE优化。 包含扩展的时间戳值。更改结束

结束特定程序编程接口信息。