La sentencia EXPLAIN obtiene información sobre la selección de una vía de
acceso para una sentencia SELECT. La información obtenida se coloca en
una tabla de usuario llamada DB2ePLANTABLE.
La sentencia EXPLAIN se puede utilizar en los sistemas operativos
siguientes:
- Win32 (Windows 95, Windows 98, Windows NT, Windows 2000 y Windows
XP)
- Linux
Invocación
Esta sentencia puede utilizarse en un programa de aplicación utilizando las
funciones de CLI de DB2 o emitirse a través del CLP.
Sintaxis
>>-EXPLAIN--SET QUERYNO=entero--FOR--Sentencia SELECT----------><
Descripción
- SET QUERYNO = entero
- Asocia entero a la sentencia SELECT. Se asigna el valor
entero a la columna QUERYNO en cada fila insertada por la sentencia
EXPLAIN en la tabla PLAN.
- Sentencia SELECT
- Especifica un conjunto de columnas nuevas en el formato de la tabla
resultante de una sentencia SELECT.
Reglas
El valor entero debe ser positivo.
Notas
- Cuando utiliza la sentencia EXPLAIN, se crea automáticamente por
omisión la tabla DB2ePLANTABLE, si no existe.
- Para crear explícitamente la tabla DB2ePLANTABLE, siga este ejemplo:
create table "DB2ePLANTABLE"
(query_no int, plan_no int, table_name char(18), index_name char(18), sort_temp char(1),
expl_timestamp timestamp, remarks varchar(300))
La Tabla 15 describe las columnas de DB2ePLANTABLE.
Tabla 15. Información sobre las columnas de DB2ePLANTABLE
Nombre de la columna
|
Descripción
|
query_no
| Número entero que asocia la sentencia EXPLAIN con los datos de salida
dentro de DB2ePLANTABLE.
|
plan_no
| Número entero que representa los pasos en los que se ejecuta la sentencia
(en orden ascendente).
|
table_name
| El nombre de la tabla o nombre correlacionado que identifica unívocamente
la tabla, o un valor nulo si no es aplicable un nombre.
|
index_name
| El nombre del índice (si se utiliza) para acceder a la tabla.
Devuelve un valor nulo si no se utiliza ningún índice.
|
sort_temp
| 'Y' significa que es necesario realizar una clasificación en
una tabla temporal para procesar una sentencia GROUP BY o ORDER BY. Si
se devuelve un valor nulo, significa que no es necesaria ninguna tabla
temporal de clasificación.
|
expl_timestamp
| Indicación horaria del momento en que se ejecuta la sentencia
EXPLAIN.
|
comentarios
| La columna de comentarios contiene el valor nulo. El usuario puede
añadir comentarios a esta columna con fines contables.
|
- DB2ePLANTABLE es una tabla de usuario que puede ser modificada o
eliminada por cualquier aplicación.
Ejemplo
Al desarrollar una nueva aplicación, es aconsejable determinar qué vía de
acceso se elige para una sentencia SELECT. En este ejemplo, una nueva
aplicación consulta las tablas SALES y EMPLOYEES. La sentencia EXPLAIN
muestra si se han elegido los índices apropiados para la sentencia
SELECT.
EXPLAIN SET QUERYNO = 100 FOR
SELECT E.EMPNAME, S.SALES_AMOUNT
FROM SALES S, EMPLOYEES E
WHERE S.EMPNO = E.EMPNO
AND S.MONTH = ?
Index XSALES on SALES(MONTH)
Index XEMP on EMPLOYEES(EMPNO)
SELECT QUERY_NO, PLAN_NO, TABLE_NAME, INDEX_NAME, SORT_TEMP
FROM "DB2ePLANTABLE"
QUERY_NO PLAN_NO TABLE_NAME INDEX_NAME SORT_TEMP
-------------------------------------------------------------------------------------------
100 1 SALES XSALES -
100 2 EMPLOYEE XEMP -
Consulta relacionada