Así como podemos verificar que los SELECT estén optimizados, también podemos hacer lo mismo con los stored procedures, aquí tenemos un ejemplo:


EXECUTE PROCEDURE GENERAR_ASIENTOS_2(2013)

llama al stored procedure GENERAR_ASIENTOS_2 el cual recibe un parámetro de entrada que corresponde al año. Al verificar su ejecución con el programa EMS SQL Manager nos encontramos con esto:

VERIFICAR1

(si haces clic en la imagen la verás más grande)

¿Más de 97 millones de registros de venta hasta mayo de 2013? eso es una total exageración, hay algo que está muy mal ahí. ¿Más de 18 millones de compras hasta mayo de 2013? imposible. ¿6 minutos y 25 segundos para completar la ejecución? demasiado tiempo, hay que acortar eso. Así que optimizamos el stored procedure para asegurarnos de que ahora sí use índices y el resultado es el siguiente:

STORED2

(si haces clic en la imagen la verás más grande)

 Se trata del mismo stored procedure pero ahora usando los índices correctos. Y la diferencia es grandísima.

  • En el primer caso la tabla VENTASDET fue leída 97.541.444 veces, en el segundo caso solamente 18.629 veces
  • En el primer caso la tabla COMPRASDET fue leída 18.666.752 veces, en el segundo caso solamente 7.384 veces
  • En el primer caso la tabla ASIENTOSDET fue leída 473.588 veces, en el segundo caso solamente 44.660 veces
  • En el primer caso la ejecución del stored procedure demoró 6 minutos y 25 segundos. En el segundo caso demoró 8 segundos

Como puedes ver, se ha logrado una mejora sustancial al usar los índices correctos y optimizar el código. Es por ese motivo que siempre debes verificar que la ejecución de tu stored procedure sea óptima. A veces, sin darte cuenta cometes algunos pequeños errores cuyas consecuencias pueden ser catastróficas (en este caso, el problema fue que los índices eran CMC_CODSUC, CMC_IDENTI en la tabla COMPRASCAB y VTC_CODSUC, VTC_IDENTI en la tabla VENTASCAB, pero en las consultas había puesto CMC_IDENTI y VTC_IDENTI, por lo tanto no se usaban los índices y ambas tablas se recorrían muchísimas más veces de las necesarias).

También es conveniente hacer clic en la pestaña “Summary” para ver un resumen de todas las inserciones, actualizaciones, borrados y consultas.

VERIFICAR3

(si haces clic en la imagen la verás más grande)

 Conclusión:

Siempre debes verificar que tus stored procedures estén optimizados porque aunque a primera vista puedan parecerte que está todo ok pueden tener algunos errores cuyas consecuencias pueden ser drásticas.

Artículos relacionados:

Usando índices correctos para aumentar la velocidad de las consultas

El índice del blog Firebird21

Anuncios