Oracle - uso de indices en oracle

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 3 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

uso de indices en oracle

Publicado por isaac (10 intervenciones) el 24/10/2019 11:58:04
Buenos días.

Mi pregunta es la siguiente:

Tengo una select que cuando hago referencia en los datos que recojo a campos que no están incluidos en el indice.

Oracle me hace un full de todas las tablas, pero si sólo elijo los campos que hay en inciden en la parte de la select , los incides me los usa, ambas select con la misma where.

Alguien tiene una explicacion de esto.

Un Saludo. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

uso de indices en oracle

Publicado por Rafael (328 intervenciones) el 25/10/2019 09:29:18
Hola, Isaac:

La explicacion es la siguiente:

Oracle, (y la mayoria de los RDBMS) usan un optimizador de consultas.

Este en funcion de las estadisticas de los datos y la estructura de la sentencia SELECT decide cuando usar o no los indices, realizar NESTED LOOPS, HASH SCAN... etc...

Ahora bien dependiendo de la version de Oracle, el optimizador puede tener distintos opciones de configuracion pero si no lo has movido, desde la version 10 la opcion por defecto es ALL_ROWS... de este modo el motor de la base de datos intentara devolverte TODOS los registros concidentes, de acuerdo a las estadisticas de las tablas en cuestion, para afectar el MENOR COSTO, involucrando para la decisión el ordenamiento de salida, los joins, y los condicionantes WHERE, decidira si usa uno, dos, n, o ningun indice.

Ahora para mejorar el rendimiento de una consulta depende de un sin fin de cuestiones, desde la cardinalidad de las tablas, la cantidad de datos contenidos, las capacidades de paralelismo, el particionado (si cuenta con ello), tipos de indices, lo que implica que sean usados, si los condicionantes estan o no indexados, al igual que los campos join.

Vaya NO es una receta de cocina, se necesita del conocimiento y analisis de las particularidades especificas de cada tabla y los datos contenidos.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar