Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Vas de ejecucin
Determinar una va o plan especfico para optimizar el coste en la ejecucin de
una consulta de Oracle, ser un proceso al que llegaremos tras haber
planteado los diferentes caminos o soluciones, haberlos ejecutado y
mejorarlos, y en un ltimo paso aclarar si el plan de ejecucin elegido es el
mejor ante un eventual cambio en el tamao y tipo de los datos que
manejaremos.
En Oracle es recomendable realizar siempre las consultas basadas en costes,
sin embargo en determinados casos la mejor opcin es por reglas, ya que
ests son inmediatas y la resolucin por costes tarda ms.
Optimizaciones adaptativas
En determinados casos las consultas formarn parte de funciones las cuales
cambiarn su mtodo de ejecucin segn el tipo de datos y las variables
introducidas.
Optimizacin en consultas
Antes de empezar recuerde que:
Una gran parte de las acciones de optimizacin de consultas se realizarn
sobre consultas SELECT, siendo las mismas las ms pesadas en trminos de
uso de tiempos.
Los mtodos aplicados a continuacin sern normalmente pensando en una
base de datos con ndices.
Las condiciones de una consulta globales as como las usadas en el filtrado de
JOIN se deben colocar en orden de ndices. Los ndices extras ralentizan la
ejecucin para las consultas de insercin, borrado y actualizacin. Pero no as
de obtencin de datos.
Resumen de diferentes mtodos que se vern en los cursostalleres para la optimizacin de consultas SQL en bases de
datos Oracle.
Smbolos operacionales
Operadores de Igualdad y Relacionales <,>,=,! . Muy recurrentes a la hora de
obtener filas especficas a modo de filtros en el WHERE. Aunque a la hora de
aplicarlos debemos saber un poco cmo funcionan:
SELECT * FROM tabla WHERE columna > 11;
En la consulta de arriba Oracle debe buscar todos los valores mayores de 11
previamente localizando el valor 11. Al aplicar un = del modo columna >=12 el
DMBS no necesita localizar el 11.
Cursores y Subconsultas
Los cursores y subconsultas tambin son igualmente evitables al mximo en
cualquiera de los casos ralentizarn las consultas.
Evitar GROUP BY
Otra clusula que debemos intentar no usar, sobre todo en consultas que
contengan JOIN a tablas en las que no se aplican funciones de agregacin
como MIN, MAX o SUM. En determinados casos se podr usar DISTINCT con
idnticos resultados.
Evitar HAVING
HAVING es una clusula a esquivar en los casos que se puede usar WHERE.
Por ejemplo cuando tenemos funciones de agregacin.
EXISTS e IN
IN suele ser ms lento, pero es ms eficiente cuando los criterios de filtro se
encuentran en una subconsulta, por el contrario EXISTS es ms eficiente
cuando los criterios del filtrado se encuentran en la consulta principal.
El uso de HINT
Aplica HINT(sugerencia) en las consultas que quieras mejorar, permitiendo a
Oracle hacer una optimizacin adaptativa de la consulta.
Tambin mientras usamos el optimizador de Oracle. Esta herramienta de
Oracle trabaja con estadsticas que no estn actualizadas en tiempo real. Los
HINT ayudan a la optimizacin de las consultas aplicando sugerencias a la
hora de extraer los datos.
Prximas charlas, curos y talleres para la optimizacin de Oracle en:
http://blitzhive.com/Programacion/index.php/Optimizacin-de-Oracle/
Perfil linkedin:
https://es.linkedin.com/in/ricardo-mart%C3%ADnez-romero-04305711a
Web y Recursos:
www.blitzhive.com
www.fb.com/blitzhive
http://www.twitter.com/blitzhive