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.
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.
| 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.
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:
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.
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:
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. |