在单独的模式下创建输入EXPLAIN表

您可以在单独的模式下创建表,从而简化命令输入所需的EXPLAIN表的填充任务。

关于本任务

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

当您发出诸如“绑定查询”之类的命令时,通常必须在包含输入值的某些相关表中填充行。 默认情况下, Db2 使用在BIND QUERY命令的发行人架构下创建的EXPLAIN表中的数据。 因此,您可以将相同的表格用作EXPLAIN数据的输出和BIND QUERY命令的输入。

然而,EXPLAIN输出表中的行数可能比BIND QUERY命令所需的行数多得多。 这些额外的行可能会干扰您想要创建的提示或覆盖。 为了避免这个问题,您可以指定 Db2 使用不同架构下的输入表。

过程

创建单独的表格,为BIND QUERY命令输入提供数值:

  1. 在您的架构下创建EXPLAIN表。
  2. 在新架构下创建以下对象的实例。
    • DSN_USERQUERY_TABLE表
    • PLAN_TABLE 表
    • PLAN_TABLE_HINT_IX 索引
    • DSN_PREDICAT_TABLE 表
    • DSN_PREDICAT_TABLE_IX 索引
    • DSN_PREDICATE_SELECTIVITY表
    • DSN_PREDICATE_SELECTIVITY_IX 索引

    您可以在SDSNSAMP库的DSNTESC成员中找到创建这些对象的示例语句。

  3. 获取语句的EXPLAIN信息,以填充架构下的EXPLAIN表。
  4. 仅从架构下的EXPLAIN表中选择所需的行,并将这些行插入新架构下的EXPLAIN表中。
    并非每张桌子都适用于每种影响路径选择的方法。 不过,最好还是创建前面列表中的所有对象,并只填充需要的对象。
  5. 根据需要修改行,其中包含 Db2 用于访问路径选择的信息。
    如需了解所需行和值的详细信息,请参阅有关您要创建的提示类型的信息:
  6. 发出BIND QUERY命令并指定EXPLAININPUTSCHEMA选项。
    例如,以下命令指定使用BINDQ模式下的输入表:
    BIND QUERY EXPLAININPUTSCHEMA('BINDQ')
    Db2 使用指定架构下表格中的值填充相关目录表格。结束特定程序编程接口信息。