DSN_PREDICATE_SELECTIVITY表
谓词选择性表包含用于访问路径选择的谓词的选择性信息。 当指定选择性覆盖时,它用作BIND QUERY命令的输入表。
当未指定选择性覆盖,或者 Db2 无法使用指定的选择性覆盖时,DSN_PREDICATE_SELECTIVITY表中包含DSN_PREDICAT_TABLE中用于访问路径选择的每个谓词的一行。 这些行包含 ASSUMPTION='NORMAL' 值。 对于不用于访问路径选择的谓词,DSN_PREDICATE_SELECTIVITY不包含来自DSN_PREDICAT_TABLE的行。
当 Db2 指定并使用选择性覆盖时,此表还包含一行,用于记录所使用的每个选择性覆盖。 这些行包含 ASSUMPTION='OVERRIDE' 值。
此外,如果所有指定的选择性覆盖实例的权重之和小于1,则此表包含DSN_PREDICAT_TABLE中用于访问路径选择的每个谓词的一行。 这些行包含 ASSUMPTION='NORMAL' 值和等于 1 减去指定覆盖权重值之和的权重值。
限定符:
您的子系统或数据共享组可以包含多个这些表,它们由用户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 表转换为当前格式。
列描述
您的子系统或数据共享组可以包含多个此类表,包括带有限定符 SYSIBM 的表、带有限定符 DB2OSCA 的表以及由用户 ID 限定的其他表。
下表显示了DSN_PREDICATE_SELECTIVITY表中的列描述。
| 列名 | 数据类型 | 描述 |
|---|---|---|
| QUERYNO | Integer Not Null | 用于标识所解释语句的数字。 价值的来源取决于行文语境:
当QUERYNO的值基于源程序中的语句编号时,超过32767的值将报告为0。 然而,在极少数情况下,价值无法保证独一无二。
|
| QBLOCKNO | SMALLINT NOT NULL | 一个用于识别查询中每个查询块的编号。 编号值没有特定顺序,也不一定连续。 |
| APPLNAME | VARCHAR(24) NOT NULL | 该行应用程序计划的名称。 仅适用于从计划中执行的嵌入式EXPLAIN语句,或绑定计划时解释的语句。 空白表示该列不适用。
|
| PROGNAME | VARCHAR(128) NOT NULL | 包含待解释语句的程序或软件包的名称。 仅适用于嵌入式EXPLAIN语句以及绑定计划或包的结果的语句。 空白表示该列不适用。
|
| SECTNOI | 整数,非空,默认值 | 语句的节号。 该值取自SYSPACKSTMT或SYSSTMT表中的同一列,可用于连接表,重建语句的访问路径。 本专栏仅适用于静态陈述。 -1 的默认值表示在 DB2® 9 或更早版本中捕获的EXPLAIN信息。 |
| COLLID | VARCHAR(128) NOT NULL | 收藏编号:
|
| 版本 | varchar(122) not null | 软件包的版本标识符。 仅适用于从包中执行的嵌入式EXPLAIN语句,或绑定包时解释的语句。
以下语句的值是空白的:![]() ![]()
当SQL语句嵌入到已编译的SQL函数或本机SQL程序中时,此列将显示函数或程序的版本标识符。 当SQL语句嵌入到高级触发器主体中时,此列将不使用且为空。![]() |
| PREDNO | INTEGER NOT NULL | 谓词编号,用于在查询中识别特定谓词的编号。 |
| INSTANCE | SMALLINT NOT NULL | 选择性实例。 用于对相关选择性进行分组。 |
| 选择性 | 浮动非空 | 选择性估计。 |
| WEIGHT | 浮点(4)非空 | 具有特定选择性的处决比例。 例如, 0.25 表示在执行查询时,有 25% 的概率出现这种选择性。 |
| 假定 | VARCHAR(128) NOT NULL | 指示选择性的估算或使用方式。 以下某个值:
|
| insert_time | 每次更新时,每行都会生成一个时间戳,作为行更改的时间戳 | 插入或更新行的时间。 |
| EXPLAIN_TIME | TIMESTAMP | EXPLAIN信息捕获的时间:
|
| REMARKS | VARCHAR(762) | IBM® 仅供内部使用。 |
| EXPANSION_REASON | char(2) not null,带默认值 | 本专栏仅适用于引用历史数据表或临时数据表的陈述。 对于其他陈述,此栏为空白。
指示当前临时业务时间特殊寄存器、当前临时系统时间特殊寄存器和 SYSIBMADM.GET_ARCHIVE 内置全局变量的效果。 这些项目受“车身敏感”、“系统敏感”和“档案敏感”绑定选项控制。 Db2 如果以下条件之一为真,则隐式地在查询中添加某些语法:
|
| 扩展原因 (续) | 此列可以有以下值之一:
|
|
PER_STMT_ID ![]() |
bigint not null ![]() |
Db2 目录表中SQL语句的持久性语句标识符。例如,此列对应于以下目录表列,用于识别 SQL 语句:
![]() |