Como saber que indice es mejor para una consulta

Hola,
tengo una consulta en oracle que me calcula la suma de stocks de un producto en varios almacenes, concretamente
select sum(stocks) from stock where idproducto=234;
La tabla stocks tiene como clave primaria el idproducto y el idalmacen, y como atributo el stock de ese producto en ese almacen.
He hecho el plan de consultas añadiendo un indice B+ sobre el atributo idproducto y otro plan añadiendo un indice cluster sobre el mismo atributo, pero no acabo de saber cual favorecerá a que el tiempo de consulta sea menor.
Espero que me puedas ayudar, gracias.

1 respuesta

Respuesta
1
Desde el sqlplus lo que puedes hacer es ejecutar el comando set autotrace on, esto al ejecutar una sentencia te muestra el plan de ejecución y al final las estadísticas de la sentencia (lecturas, ordenaciones... etc).
Con esto lo que puedes hacer es ejecutar la sentencia con el primer indices y ver que es lo que da, seguidamente con el segundo y lo mismo y al final comparas.
Una herramienta muy útil es el sqlanalyze dentro del Oracle Management Server este es una herramienta gráfica y te permite ver el plan de ejecución y los costes (inclusive te permite ejecutar las sentencias y comparar los tiempos). También te permite crear indices virtuales y evaluar como sería la sentencia con esa indices y además puedes obligarle a ir por el indice que tu quieras (como si fueran hints) de forma que puedes crear los dos indices y evaluarlos a la vez.
También tiene un asistente que evalúa si haría falta un indice para esa sentencia y normalmente (no siempre) suelen ser buenas recomendaciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas