Tabla DSN_PREDICATE_SELECTIVITY
La tabla de selectividad de predicados contienen información sobre la selectividad de los predicados que se utilizan para acceder a la selección de vías de acceso. Se utiliza como una tabla de entrada para el mandato BIND QUERY cuando se especifican alteraciones temporales de selectividad.
Cuando no se especifican modificaciones de selectividad o las modificaciones de selectividad especificadas no pueden ser utilizadas por Db2, la tabla DSN_PREDICATE_SELECTIVITY contiene una fila para cada predicado de DSN_PREDICAT_TABLE que se utiliza para la selección de vía de acceso. Estas filas incluyen valores ASSUMPTION='NORMAL'. DSN_PREDICATE_SELECTIVITY no contiene filas de la tabla DSN_PREDICAT_TABLE para predicados que no se utilizan en la selección de vías de acceso.
Cuando Db2 especifica y utiliza modificaciones de selectividad, esta tabla también contiene una fila para cada modificación de selectividad que se ha utilizado. Estas filas incluyen valores ASSUMPTION='OVERRIDE'.
Asimismo, si la suma de las ponderaciones de todas las instancias de sustitución de selectividad especificadas es inferior a uno, esta tabla contiene una fila para cada predicado de la tabla DSN_PREDICAT_TABLE que se utiliza para seleccionar vías de acceso. Estas filas contienen valores ASSUMPTION='NORMAL' y valores WEIGHT equivalentes a uno menos la suma de los valores de ponderación de sustitución especificados.
Calificadores
Su subsistema o grupo de uso compartido de datos contiene varias instancias de estas tablas cualificadas por el ID de usuario. Estas tablas se llenan con la información de coste de sentencias cuando se emite la sentencia EXPLAIN o se vincula. También se llenan cuando especifica EXPLAIN(YES) o EXPLAIN (ONLY) en un mandato BIND o REBIND. Las herramientas de optimización de SQL también pueden crear tablas de EXPLAIN calificadas por un ID de usuario. Puede encontrar la sentencia de SQL para crear una instancia de estas tablas en el miembro DSNTESC de la biblioteca SDSNSAMP.
Sentencia de CREATE TABLE de ejemplo
Puede encontrar un ejemplo de declaración CREATE TABLE para cada tabla EXPLAIN en el miembro DSNTESC de la biblioteca con prefijo. SDSNSAMP. Para actualizar las tablas EXPLAIN al formato de la actual Db2, puede llamar al procedimiento almacenado ADMIN_EXPLAIN_MAINT. ADMIN_EXPLAIN_MAINT también puede crear tablas EXPLAIN, actualizarlas al formato de la versión actual de Db2 o realizar otras tareas de mantenimiento. Consulte el procedimiento almacenado ADMIN_EXPLAIN_MAINT para obtener información sobre el uso del parámetro de entrada action para solicitar cada una de estas tareas. Alternativamente, para realizar sólo la tarea de actualizar las tablas EXPLAIN al formato de la actual Db2, puede ejecutar la tarea DSNTIJXA. DSNTIJXA invoca al REXX exec DSNTXTA para realizar la actualización. Consulte Migración paso 21: Convertir tablas EXPLAIN al formato actual para obtener más información sobre la ejecución de DSNTIJXA.
Descripciones de columnas
El subsistema o el grupo de compartimiento de datos pueden contener más de una de estas tablas, incluyendo una tabla con el calificador SYSIBM, una tabla con el calificador DB2OSCA y tablas adicionales que están calificadas por los ID de usuario.
En la siguiente tabla se muestran las descripciones de las columnas de la tabla DSN_PREDICATE_SELECTIVITY.
| Nombre de columna | Tipo de datos | Descripción |
|---|---|---|
| QUERYNO | INTEGER NOT NULL | Número que identifica la sentencia que se va a explicar. El origen del valor depende del contexto de la fila:
Cuando los valores de QUERYNO se basan en el número de sentencia del programa de origen, los valores que superan 32767 se notifican como 0. Sin embargo, en algunos casos raros, no está garantizado que el valor sea exclusivo. Cuando la instrucción SQL está incrustada en una función SQL compilada, un procedimiento SQL nativo o un desencadenador avanzado, si se especifica la cláusula QUERYNO, su valor es utilizado por Db2. De lo contrario, Db2 asigna un número basado en el número de línea de la instrucción SQL en la función SQL compilada, el procedimiento SQL nativo o el desencadenador avanzado. |
| QBLOCKNO | SMALLINT NOT NULL | Un número que identifica cada bloque de consulta dentro de una consulta. El valor de los números no está en ningún orden en particular, ni son necesariamente consecutivos. |
| APPLNAME | VARCHAR(24) NOT NULL | El nombre del plan de
aplicación para la fila. Sólo se aplica a sentencias EXPLAIN
incorporadas que se ejecutan desde un plan o a sentencias que se
explican cuando se vincula un plan. Un blanco indica que la
columna no es aplicable. Cuando la instrucción SQL está incrustada en una función SQL compilada, un procedimiento SQL nativo o un desencadenador avanzado, esta columna no se utiliza y está en blanco. |
| PROGNAME | VARCHAR(128) NOT NULL | El nombre del programa
o el paquete que contiene la sentencia que se explica. Sólo se aplica a sentencias EXPLAIN incorporadas y a sentencias que
se explican como resultado de la vinculación de un plan o paquete. Un blanco indica que la
columna no es aplicable. Cuando la sentencia SQL se incluye en una función SQL compilada o procedimiento de SQL nativo, esta columna indica el nombre específico de la función SQL compilada o procedimiento SQL nativo. Cuando la sentencia SQL se incluye en un activador avanzado, esta columna contiene el nombre del activador. |
| SECTNOI | INTEGER NOT NULL WITH DEFAULT | El número de sección de la sentencia. El valor se obtiene de la misma columna en las tablas SYSPACKSTMT o SYSSTMT y puede utilizarse para unir tablas para reconstruir la vía de acceso de la sentencia. Esta columna sólo es aplicable para las sentencias estáticas. El valor predeterminado de -1 indica EXPLAIN información que fue capturada en DB2® 9 o anterior. |
| COLLID | VARCHAR(128) NOT NULL | El ID de recopilación:
Cuando la instrucción SQL está incrustada en una función SQL compilada, un procedimiento SQL nativo o un desencadenador avanzado, esta columna indica el nombre del esquema de la función SQL compilada, el procedimiento SQL nativo o el desencadenador avanzado. |
| Version | VARCHAR(122) NOT NULL | El identificador de versión del paquete. Solo se aplica a una sentencia EXPLAIN incorporada ejecutada desde un paquete o a una sentencia que se explica al enlazar un paquete. Si el valor no está en blanco, el valor es el mismo que el valor VERSION para el paquete que se ha utilizado para crear esta fila de tabla EXPLAIN. El valor está en blanco para un extracto en:
|
| PREDNO | INTEGER NOT NULL | El número de predicado, un número utilizado para identificar un predicado dentro de una consulta. |
| INSTANCIA | SMALLINT NOT NULL | Instancia de selectividad. Se utiliza para agrupar selectividades relacionadas. |
| SELECTIVITY | FLOAT NOT NULL | Estimación de la selectividad. |
| WEIGHT | FLOAT(4) NOT NULL | Porcentaje de ejecuciones que tienen la selectividad especificada. Por ejemplo, un valor de 0,25 significa que el 25% del tiempo cuando se ejecuta esta consulta tiene esta selectividad. |
| ASSUMPTION | VARCHAR(128) NOT NULL | Indica cómo se estima la selectividad
o cómo se utiliza. Uno de los valores siguientes:
|
| INSERT_TIME | TIMESTAMP NOT NULL GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP | La hora en que se ha insertado o actualizado la fila. |
| EXPLAIN_TIME | TIMESTAMP | Hora a la que se ha
capturado la información de EXPLAIN:
|
| REMARKS | VARCHAR (762) | IBM® solo para uso interno. |
| EXPANSION_REASON | CHAR(2) NOT NULL WITH DEFAULT | Esta columna se aplica sólo a sentencias que hacen referencia a tablas de archivo o tablas temporales. En otras sentencias, esta columna está en blanco.
Indica el efecto del registro especial CURRENT TEMPORAL BUSINESS_TIME, el registro especial CURRENT TEMPORAL SYSTEM_TIME y la variable global incorporada SYSIBMADM.GET_ARCHIVE. Estos elementos están controlados por las opciones de vinculación BUSTIMESENSITIVE, SYSTIMESENSITIVE y ARCHIVESENSITIVE. Db2 añade implícitamente cierta sintaxis a la consulta si se cumple una de las condiciones siguientes:
|
| MOTIVO DE LA AMPLIACIÓN (continuación) | Esta columna puede tener uno de los valores siguientes:
|
|
| PER_STMT_ID | BIGINT NOT NULL | El identificador de sentencia persistente para sentencias SQL en tablas de catálogo de Db2. Por ejemplo, esta columna corresponde a las columnas de la tabla de catálogo siguiente que identifican sentencias SQL:
|