Codificación eficiente de consultas con funciones de totales
Si la consulta implica funciones de totales, puede tomar medidas para aumentar las posibilidades de que se evalúen al recuperar los datos, en lugar de después. Si hace esto puede mejorar el rendimiento de la consulta.
Acerca de esta tarea
En general, una función de totales funciona mejor cuando se evalúa durante el acceso a los datos y luego, mejor cuando se evalúa durante la clasificación de Db2. El momento menos preferible es que la función de totales se evalúe después de recuperar los datos. Puede utilizar EXPLAIN para determinar cuándo Db2 evalúa las funciones de totales.
Las consultas que implican funciones MAX o MIN pueden aprovechar el acceso de una captación.
Procedimiento
Para asegurarse de que se evalúa una función de totales cuando Db2 recupere los datos:
Codifique la consulta de modo que cada función de totales que contenga satisfaga
los criterios siguientes:
- No se necesita ninguna clasificación para GROUP BY. Compruebe esto en la salida de EXPLAIN.
- No existen predicados de la etapa 2 (residuales). Compruebe esto en la aplicación.
- No existen funciones de conjuntos diferenciados como, por ejemplo, COUNT(DISTINCT C1).
- Si la consulta es una unión, todas las funciones del conjunto deben estar en la última tabla unida. Compruebe esto consultando la salida de EXPLAIN.
- Todas las funciones de totales deben estar en columnas individuales sin expresiones aritméticas.
- La función de totales no es una de las siguientes funciones de totales:
- STDDEV
- STDDEV_SAMP
- VAR
- VAR_SAMP