验证指定的访问路径
Db2 无法始终使用您指定的访问路径。 当指定的访问路径无法使用时, Db2 会将指定的访问路径标记为无效。
如果您指定的访问路径存在问题, 会将整个查询块设为无效。 Db2 在这种情况下, Db2 将确定访问路径,就像没有指定访问路径一样。
Db2 在验证指定的访问路径时,仅使用下表中列出的PLAN_TABLE列。
| 专栏 | 公认的价值观或解释 |
|---|---|
| QUERYNO、APPLNAME、PROGNAME、VERSION、COLLID、OPTHINT | 必须分别与当前查询编号、应用程序名称、程序名称、版本ID、集合ID和当前优化提示特殊寄存器的值相匹配。 |
| QBLOCKNO、PLANNO和MIXOPSEQ | 必须提供PLAN_TABLE行 |
| 方法 | 必须为0、1、2、3或4。 任何其他值都会导致指定的访问路径无效。 |
| 创建者和别名 | 必须指定并命名表、物化视图、物化嵌套表表达式。 如果方法为3,则留空。 如果指定的表不存在或不在查询范围内,则指定的访问路径无效。 |
MATCHCOLS![]() |
仅当ACCESSTYPE为IN、N或HN时,才使用该值。 此值必须大于或等于 0。![]() |
| TABNO | 仅当以下列无法唯一标识特定表引用时,才需要此值:
当不需要时,此字段将被忽略。 |
| ACCESSTYPE | 表格的访问方法。 可接受的值列表请参见 PLAN_TABLE。 包含以下值之一的每一行必须在其前面包含一行ACCESSTYPE='M',否则指定的访问路径无效:
任何一行包含ACCESSTYPE='A'的行都会使指定的访问路径无效。 |
| 访问创建者和访问名称 | 如果ACCESSTYPE为R或M,则忽略。如果ACCESSTYPE包含以下任何值,则这些字段必须标识指定表上的索引。
如果索引不存在,或者索引定义在不同的表上,则指定的访问路径无效。 此外,如果指定的索引无法使用,则指定的访问路径无效。 |
| SORTN_JOIN和SORTC_JOIN | 必须为Y、N或留空。 任何其他值都会导致指定的访问路径无效。 该值决定 Db2 是应该对新的(SORTN_JOIN)还是复合的(SORTC_JOIN)表进行排序。 如果指定的连接方法、连接顺序、访问类型和访问名称决定了是否需要新表或复合表,则忽略此值。 |
| SORTC_ORDERBY和SORTC_GROUPBY | 可接受值的列表请参见 PLAN_TABLE。 不考虑意外值。 |
| PREFETCH | 该值决定了 Db2 使用的预取类型。 可接受值的列表请参见 PLAN_TABLE。 如果指定的访问类型和访问名称决定了所需的预取类型,则忽略此值。 |
| COLUMN_FN_EVAL | 可接受值的列表请参见 PLAN_TABLE。 不考虑意外值。 |
| PAGE_RANGE | 必须为Y、N或留空。 任何其他值都会导致指定的访问路径无效。 |
| JOIN_TYPE | 可接受值的列表请参见 PLAN_TABLE。 不考虑意外值。 |
| PARALLELISM_MODE | 仅当可以并行运行查询时,才会使用该值;也就是说,SET CURRENT DEGREE特殊寄存器包含ANY,或者计划或包与DEGREE(ANY)绑定。 如果平行性是可能的,则此列必须包含以下数值之一:
如果计划表包含多个平行度规格, Db2 将仅使用第一个。 Db2 不会比较多个指定的访问路径以检查一致性。 |
| ACCESS_DEGREE 或 JOIN_DEGREE | 如果指定了 PARALLELISM_MODE,请使用此字段指定并行度。 如果您指定了平行度,则该数值必须大于零, Db2 可能会根据您在此处设置的数值调整平行度。空值表示无平行度如果您希望 Db2 来确定程度,请不要在此字段中输入数值。 如果您为ACCESS_DEGREE或JOIN_DEGREE指定了值,则必须同时指定相应的ACCESS_PGROUP_ID和JOIN_PGROUP_ID。 如果 Db2 使用并行度提示,而不是IN-list并行度提示,或者如果 degree=0 使用提示,则 Db2 无条件使用提示的并行度,而与PARAMDEG子系统参数的值无关。 因此,请确保提示中指出的平行度是合理的。 |
| SORTN_PGROUP_ID和SORTC_PGROUP_ID | 必须是正数或零。 空值表示对应表没有并行排序。 |
| WHEN_OPTIMIZE | 必须为R、B或空格。 任何其他值都会导致指定的访问路径无效。 当与 REOPT(ALWAYS) 绑定在一起的规划中的语句在运行时符合重新优化的条件,并且您为该语句提供了优化提示时,WHEN_OPTIMIZE 的值将决定 Db2 是否在运行时重新优化该语句。 如果 WHEN_OPTIMIZE 的值为空或 B,则 Db2 仅使用绑定时优化提示提供的访问路径。 如果WHEN_OPTIMIZE的值为R,则 Db2 会在绑定时使用指定的访问路径来确定访问路径。 运行时, Db2 会再次在PLAN_TABLE中搜索提示,如果语句的指定访问路径仍在PLAN_TABLE中且仍然有效, Db2 会再次优化访问路径。 |
| QBLOCK_TYPE | 必须指定一个值。 QBLOCK_TYPE列中的空白会使指定的访问路径无效。 |
| PRIMARY_ACCESSTYPE | 必须为D、T或空格。 任何其他值都会使指定的访问路径无效。 |
| MERGC | 只能是Y或N。 |
| EXPANSION_REASON | Db2 仅将此列用于引用存档或临时表且包含多个计划的语句。 |
MATCHCOLS