Validación de las vías de acceso especificadas

Db2 no siempre puede utilizar vías de acceso que especifique el usuario. Cuando no se puede utilizar una vía de acceso especificada, Db2 marca la vía de acceso especificada como no válida.

Iniciar la información de la interfaz de programación específica del programa. Si una vía de acceso que especifica tiene problemas, Db2 la invalida para un bloque de consulta entero. En ese suceso, Db2 determina la vía de acceso como si no se hubiera especificado ninguna.

Db2 solo utiliza las columnas PLAN_TABLE que se muestran en la tabla siguiente cuando valida las vías de acceso especificadas.

Tabla 1. Columnas PLAN_TABLE que valida Db2
Columna o columnas Valores aceptados o explicación
QUERYNO, APPLNAME, PROGNAME, VERSION, COLLID, OPTHINT Deben coincidir con el valor del número de consulta actual, el nombre de aplicación, el nombre de programa, el ID de versión, el ID de recopilación y el registro especial CURRENT OPTIMIZATION HINT respectivamente.
QBLOCKNO, PLANNO y MIXOPSEQ Debe proporcionarse para identificar filas PLAN_TABLE.
METHOD Debe ser 0, 1, 2, 3 ó 4. Cualquier otro valor invalida la vía de acceso especificada.
CREATOR y TNAME Se deben especificar y deben nombrar una tabla, vista materializada, expresión de tabla anidada materializada. En blanco si METHOD es 3. Si se nombra una tabla que no existe o que no participa en la consulta, las vías de acceso especificadas se invalidan.
MATCHCOLS Este valor se utiliza solamente cuando ACCESSTYPE es IN, N o HN. El valor debe ser mayor o igual a 0.
TABNO Este valor solamente es necesario si las columnas siguientes no identifican de forma exclusiva una referencia de tabla concreta.
  • CREATOR
  • TNAME
  • CORRELATION_NAME
  • QBLOCKNO
Esta situación puede darse si se hace referencia a la misma tabla en varias vistas con el mismo CORRELATION_NAME.

Este campo se ignora si no es necesario.

ACCESSTYPE El método de acceso para la tabla. Para ver la lista de valores aceptados, consulte PLAN_TABLE.
Cada fila que contiene uno de los siguientes valores debe ir precedido por una fila que contenga ACCESSTYPE='M' o la vía de acceso especificada queda invalidada:
  • DI
  • DU
  • MH
  • MI
  • MU
  • MX

Cualquier fila que contenga ACCESSTYPE='A' invalida la vía de acceso especificada.

ACCESSCREATOR y ACCESSNAME Se ignoran si ACCESSTYPE es R o M. Si ACCESSTYPE contiene cualquiera de los valores siguientes, estos campos deben identificar un índice en la tabla especificada.
  • H
  • HN
  • I
  • I1
  • ENTRADA
  • N
  • NR

Si el índice no existe, o si está definido en una tabla distinta, las vías de acceso especificadas no son válidas. Las vías de acceso especificadas también se invalidan si el índice especificado no se puede utilizar.

SORTN_JOIN y SORTC_JOIN Debe ser Y, N o un valor en blanco. Cualquier otro valor invalida la vía de acceso especificada.

Este valor determina si Db2 debe clasificar la tabla nueva (SORTN_JOIN) o compuesta (SORTC_JOIN). Este valor se pasa por alto si el método de unión especificado, la secuencia de unión, el tipo de acceso y el nombre de acceso indican si se necesita una clasificación de tabla nueva o de tabla compuesta.

SORTC_ORDERBY y SORTC_GROUPBY Para ver una lista de valores aceptados, consulte PLAN_TABLE. Los valores inesperados se ignoran.
PREFETCH Este valor determina el tipo de captación previa que Db2 utiliza. Para ver una lista de valores aceptados, consulte PLAN_TABLE.

Este valor se pasa por alto si el tipo de acceso y el nombre de acceso especificados indican el tipo de captación previa necesario.

COLUMN_FN_EVAL Para ver una lista de valores aceptados, consulte PLAN_TABLE. Los valores inesperados se ignoran.
PAGE_RANGE Debe ser Y, N o un valor en blanco. Cualquier otro valor invalida la vía de acceso especificada.
JOIN_TYPE Para ver una lista de valores aceptados, consulte PLAN_TABLE. Los valores inesperados se ignoran.
PARALLELISM_MODE Este valor solo se utiliza si se puede ejecutar la consulta en paralelo; es decir, el registro especial SET CURRENT DEGREE contiene ANY, o el plan o paquete se ha vinculado con DEGREE(ANY).
Si se permite el paralelismo, esta columna debe contener uno de los valores siguientes:
  • C
  • I
  • X
  • nulo
Todas las restricciones en las que interviene el paralelismo se siguen aplicando cuando se utilizan sugerencias de vía de acceso. Si la modalidad especificada no se puede ejecutar, las vías de acceso especificadas se invalidan o se modifica la modalidad. Un posible resultado es que la consulta se ejecuta sin paralelismo. Un valor nulo indica que no hay paralelismo.

Si la tabla del plan contiene varias especificaciones de paralelismo, Db2 utiliza solo la primera. Db2 no compara múltiples rutas de acceso especificadas para comprobar la coherencia.

ACCESS_DEGREE o JOIN_DEGREE Si se especifica PARALLELISM_MODE, utilice este campo para especificar el grado de paralelismo. Si especifica un grado de paralelismo, éste debe ser un número mayor que cero, y Db2 puede ajustar el grado paralelo a partir de lo que ha establecido aquí.Un valor nulo indica que no hay paralelismo. Si desea que Db2 determine el grado, no especifique un valor en este campo.

Si especifica un valor para ACCESS_DEGREE o JOIN_DEGREE, también debe especificar valores de ACCESS_PGROUP_ID y JOIN_PGROUP_ID correspondientes.

Si Db2 utiliza una sugerencia para el paralelismo, que no sea para el paralelismo de lista IN o una sugerencia para el grado= 0, Db2 utiliza el grado de paralelismo sugerido de forma incondicional, independientemente del valor del parámetro de subsistema PARAMDEG. Por consiguiente, debe asegurarse de que las sugerencias especifican grados razonables de paralelismo.

SORTN_PGROUP_ID y SORTC_PGROUP_ID Deben ser un número positivo o un valor nulo. Un valor nulo indica que no hay ordenación paralela para la tabla correspondiente.
WHEN_OPTIMIZE Debe ser R, B o un valor en blanco. Cualquier otro valor invalida la vía de acceso especificada.

Cuando una sentencia de un plan que está vinculado con REOPT(ALWAYS) cumple las condiciones para la reoptimización en tiempo de ejecución y se han proporcionado sugerencias de optimización para dicha sentencia, el valor de WHEN_XX_ENCODE_CASE_ONE optimize determina si Db2 reoptimiza la sentencia en tiempo de ejecución. Si el valor de WHEN_XX_ENCODE_CASE_ONE_OPTIMIZE está en blanco o B, Db2 solo utiliza la vía de acceso proporcionada por las sugerencias de optimización en tiempo de enlace. Si el valor de WHEN_XX_ENCODE_CASE_ONE_OPTIMIZE es R, Db2 utiliza las vías de acceso especificadas en tiempo de enlace para determinar la vía de acceso. En tiempo de ejecución, Db2 busca de nuevo las sugerencias de PLAN_TABLE y, si las vías de acceso especificadas para la sentencia todavía están en PLAN_TABLE y siguen siendo válidas, Db2 vuelve a optimizar la vía de acceso.

QBLOCK_TYPE Debe especificarse un valor. Un valor en blanco en la columna QBLOCK_TYPE invalida la vía de acceso especificada.
PRIMARY_ACCESSTYPE Debe ser D, T o un valor en blanco. Cualquier otro valor invalida las vías de acceso especificadas.
MERGC Debe ser Y o N.
EXPANSION_REASON Db2 utiliza esta columna únicamente para las sentencias que hacen referencia al archivado o a las tablas temporales y tienen varios planes.

Finalizar la información de la interfaz de programación específica del programa.