CÓMO SE PUEDE COMPROBAR EN ORACLE SI UNA EXPRESIÒN SQL USA O NO LOS ÍNDICES.??

polyis
21 de Junio del 2004
tengo que etregar un trabajo y no cacho na, porfa si alguien me puede ayudar...
tengo que determinar SI EL ACCESO ES TABLE SCAN CUANDO NO DEBERÌA SERLO, INVESTIGAR QUE HACE QUE UN QUERY NO OCUPE UN ÍNDICE.y tambien responder lo que puse en el titulo, de verdad si alguien me pudiese ayudar se lo voy a agradecer eternamente

Rodolfo Reyes
21 de Junio del 2004
Puedes hacer dos cosas:

1) En el enterprise manager, puedes utilizar el Explain Plan, para ver la forma en como resuelve los JOIN en Oracle. Esto te puede dar una idea de si las busquedas las esta haciendo con indices o esta haciendo un barrido total de la tabla.

Documentación para entender el Explain Plan

http://www.orape.net/html/index.php

En la parte de "DESCARGAR MATERIAL PARA USUARIOS" escribe "Explain Plan". Esto te devuelve un par de manuales que creo que te ayudaran


2) REVISA EL PLAN DE EJECUCION, desde el SQL*PLUS

Ejemplo:

ALTER SESSION SET SQL_TRACE=TRUE

POR CADA CONSULTA QUE EJECUTA A&ANE

EXPLAIN PLAN FOR 'CONSULTA'

EJECUTADA LA CONSULTA REVISA EL PLAN_TALBLE

SELECT LPAD('", 2*LEVEL) || OPERATION || ' ' || OPTIONS || ' ' || OBJECT_NAME
FROM PLAN_TABLE
CONNECT BY PRIOR ID = PARENT_ID
START WITCH ID = 1

CON ESTE RESULTADO PUEDE VER COMO ACTUANS LOS JOINS INDICES, FULL, SCAN, ETC. AFINA AQUI TU CONSULTA INDICES, COIDCIONES JOIN, TABLAS POSTE, ETC..




polyis
21 de Junio del 2004
Muchas gracias, la verdad es que me sirvio de mucho tu ayuda.