Академический Документы
Профессиональный Документы
Культура Документы
Optimizacin de consultas
Uno de los principales objetivos es disminuir el tiempo de ejecucin de
las consultas que se realizan ms frecuentemente sobre una base de
datos.
Modificar el diseo fsico:
Modificar la organizacin: aadir o cambiar ndices, dividir tablas,
particionar tablas.
Reorganizar las estructuras para mantener las caracterstcas a
pesar de borrados o actualizaciones.
Oracle posee un optimizador interno que le permite optimizar el plan
de ejecucin de una consulta. A veces, las caractersticas de los datos
de la base de datos cambian rpidamente, para que el optimizador
(sus estadsticas) sean actualizadas. En este caso, los hints podran ser
de ayuda. Por ejemplo, sea hint el nombre de un hint, ste es incluido
en una consulta como sigue:
SELECT /* + hint(table) */ column1, column2 FROM table WHERE
condition;
Los hint (sugerencias) pueden ser clasificados de la siguiente manera:
|| Hint || || Descripcin ||
|| /*+ CHOOSE */ || || Pone la consulta a costes. ||
|| /*+ RULE */ || || Pone la consulta a reglas. ||
|| /*+ ALL_ROWS */ || || Pone la consulta a costes y la optimiza para
que devuelva todas las filas en el menor tiempo posible. Es la opcin
por defecto del optimizador basado en costes. Esto es apropiado para
procesos en masa, en los que son necesarias todas las filas para
empezar a trabajar con ellas. ||
|| /*+ FIRST_ROWS */ || || Pone la consulta a costes y la optimiza para
conseguir que devuelva la primera fila en el menor tiempo posible.
Esto es idneo para procesos online, en los que podemos ir trabajando
con las primeras filas mientras se recupera el resto de resultados.
Este //hint// se desactivar si se utilizan funciones de grupo como SUM,
AVG, etc. ||
|| /*+ INDEX( tabla ndice ) */ || o || Fuerza la utilizacin del ndice
indicado para la tabla indicada. Se puede indicar el nombre de un
ndice (se utilizar ese ndice), de varios ndices (el optimizador elegir
uno entre todos ellos) o de una tabla (se utilizar cualquier ndice de la
tabla). ||
|| /*+ ORDERED */ || || Hace que las combinaciones de las tablas se
hagan en el mismo orden en que aparecen en el join. ||
Para ms informacin sobre los //hints// consultar el //Oracle 8 Tunning.
//
Una misma consulta puede generar distintos planes de ejecucin en
las siguientes situaciones: Cambios en las estadsticas de las tablas
(COMPUTE STATISTICS) si se utiliza un
optimizador basado en costes. Uso de los //hints //en si se utiliza el
optimizador basado en reglas. Aadir o eliminar ndices de una tabla,
si se utiliza el optimizador basado en reglas.
===== Calcular el coste de una consulta =====
Para calcular el coste de una consulta, el optimizador se basa en las
estadsticas almacenadas en el catlogo de Oracle, a travs de la
instruccin:
ANALYZE [TABLE,INDEX] [COMPUTE, ESTIMATE] STATISTICS;
Si no existen datos estadsticos para un objeto (por ejemplo, porque se
acaba de crear), se utilizarn valores por defecto. Adems, si los datos
estadsticos est anticuados, se corre el riesgo de calcular costes
basados en estadsticas incorrectas, pudiendo ejecutarse planes de
||
||
||
||
||
||
||
||
||
||
||
||
||
OBJECT_NAME || VARCHAR2(30), ||
OBJECT_INSTANCE || NUMERIC, ||
OBJECT_TYPE || VARCHAR2(30), ||
OPTIMIZER || VARCHAR2(255), ||
SEARCH_COLUMNS || NUMERIC, ||
ID || NUMERIC, ||
PARENT_ID || NUMERIC, ||
POSITION || NUMERIC, ||
COST || NUMERIC, ||
CARDINALITY || NUMERIC, ||
BYTES || NUMERIC, ||
OTHER_TAG || VARCHAR2(255), ||
OTHER || LONG); ||
BIBLIOGRAFIA