Oracle - Una instruccion bien curiosa

 
Vista:

Una instruccion bien curiosa

Publicado por Arturo T (69 intervenciones) el 02/09/2002 18:51:02
Hola compañeros:
Ejecuto las siguientes consultas de las cuales la ultima se demora muchisimo que pueden decirme uds?

SELECT SUM(VALOR), COUNT(CODIGOBARRASI)
FROM TMULTA M,TEJEMPLAR E
WHERE M.CODIGOBARRASI=E.CODIGOBARRAS
AND FECHAPAGO='29/08/02'
AND M.CODUSUARIO=0
AND CODUBICACION = 1;

SELECT SUM(VALOR), COUNT(CODIGOBARRASI)
FROM TEJEMPLAR E,TMULTA M
WHERE M.CODIGOBARRASI=E.CODIGOBARRAS
AND FECHAPAGO='29/08/02'
AND M.CODUSUARIO=0
AND CODUBICACION = 1;

SELECT SUM(VALOR), COUNT(CODIGOBARRASI)
FROM TEJEMPLAR E, TMULTA M
WHERE M.CODIGOBARRASI=E.CODIGOBARRAS
AND FECHAPAGO='29/08/02'
AND M.CODUSUARIO=0
AND CODUBICACION = '1';

Esta es la consulta que se demora:
SELECT SUM(VALOR), COUNT(CODIGOBARRASI)
FROM TMULTA M,TEJEMPLAR E
WHERE M.CODIGOBARRASI=E.CODIGOBARRAS
AND FECHAPAGO='29/08/02'
AND M.CODUSUARIO=0
AND CODUBICACION = '1';

No se si es el orden de las tablas en la clausula FROM o que pasa?
anexo: CODUBICACION VARCHAR2(2)
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

RE:Una instruccion bien curiosa

Publicado por KEN (115 intervenciones) el 02/09/2002 22:23:10
has realizado un analyze a las tablas en cuestion ??
Si se demora cuando cambias el FROM es que debe ir por RULE (sintaxis driving) osea q el plan de ejecucion se modifica cuando se modifica el FROM o el WHERE
Si el parametro OPTIMIZER_MODE esta en CHOOSE deberias analizar tus tablas e indices.

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

RE:Una instruccion bien curiosa

Publicado por Harold (697 intervenciones) el 02/09/2002 22:54:54
Que cantidad de registros tiene cada tabla???

Saludes

Harold
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

RE:Una instruccion bien curiosa

Publicado por Arturo T (69 intervenciones) el 02/09/2002 23:28:13

TEJEMPLAR tiene 94,000 registros

TMULTA tiene 23,000 registros
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

RE:Una instruccion bien curiosa

Publicado por Harold (697 intervenciones) el 02/09/2002 23:46:26
1. Revisa el modo del optimizador (Rule, Cost o Choose)
2. Si esta en Choose
a. Analiza la tabla
alter table TEJEMPLAR ANALYZE;
alter table TMULTA ANALYZE ;
b. En el FROM de la consulta primero tienes que poner la tabla con mas registros y luego la de menos registro
FROM TEJEMPLAR, TMULTA
3. Si lo haces por rule es de forma contraria:
from TMULTA,TEJEMPLAR

Esto es asi por la forma en que oracle hace el parse.

Para saber cual estas utilizando genera estadisticas de la consulta, antes de ejecutarla escribe:
set autotrace traceonly explain;

Saludes
Harold
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

RE:Una instruccion bien curiosa

Publicado por Arturo Ordoñez (24 intervenciones) el 14/09/2002 18:24:27
Soy novato en Oracle pero me animo a decirte que deberias probar con decir en el Where a que tablas pertenecen ..FECHAPAGO y CODUBICACION si pertenecen a alguna tabla de las declaradas.
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