Oracle - Me pueden resolver un conflicto??

   
Vista:

Me pueden resolver un conflicto??

Publicado por Jonatan (1 intervención) el 04/08/2009 14:45:05
Hola y gracias de antemano por vuestras posibles respuestas.

tengo un problema con el siguiente pl:

SELECT
DISTINCT( VISTA.REFERENCIA_LIBRO)
, VISTA.TITULO
, VISTA.AUTOR
, null as tema
, null as medio
, null as municipo
, null as localidad
, null as comarca
, null as provincia
, null as texto_libre
, null as referencia_libro
, null as ano_publicacion
, null as editorial
, null as extracto
FROM
ENTO_V_LIBRO_AUTORES VISTA
where
/* ******* parte 1 ********** */
EXISTS (SELECT 'x'
FROM ETN_AMBITOS
WHERE ETN_AMBITOS.REFERENCIA_LIBRO=VISTA.REFERENCIA_LIBRO
AND ( ETN_AMBITOS.CODIGO_PROVINCIA IS NULL
OR ETN_AMBITOS.CODIGO_PROVINCIA=''
OR ETN_AMBITOS.CODIGO_PROVINCIA='00'
OR ETN_AMBITOS.CODIGO_PROVINCIA= '44')
)

/* ******* parte 2 ********** */

AND EXISTS ( SELECT 'x'
FROM ETN_AMBITOS , IAE.CES_MUNICIPIOS
WHERE ETN_AMBITOS.REFERENCIA_LIBRO=VISTA.REFERENCIA_LIBRO
AND ETN_AMBITOS.CODIGO_MUNICIPIO=IAE.CES_MUNICIPIOS.CODIGO_MUNICIPIO
AND ETN_AMBITOS.CODIGO_PROVINCIA=IAE.CES_MUNICIPIOS.CODIGO_PROVINCIA
AND UPPER(IAE.CES_MUNICIPIOS.NOMBRE_MUNICIPIO) LIKE UPPER('%teruel%')
)

/* ******* parte 3 ********** */

AND EXISTS (
SELECT 'x'
FROM
ETN_AMBITOS
, IAE.CES_LOCALIDADES
WHERE
ETN_AMBITOS.REFERENCIA_LIBRO=VISTA.REFERENCIA_LIBRO
AND ETN_AMBITOS.CODIGO_LOCALIDAD=IAE.CES_LOCALIDADES.CODIGO_LOCALIDAD
AND ETN_AMBITOS.CODIGO_MUNICIPIO=IAE.CES_LOCALIDADES.CODIGO_MUNICIPIO
AND ETN_AMBITOS.CODIGO_PROVINCIA=IAE.CES_LOCALIDADES.CODIGO_PROVINCIA
AND UPPER(IAE.CES_LOCALIDADES.NOMBRE_LOCALIDAD) LIKE UPPER('%teruel%')
)

mi duda es que no se porque si lo ejecuto completo o solo cualquiera de las 3 partes, tanda muy poco en hacer la consulta (1s o asi), pero si la ejecuto por pares (osea la parte 1 y 2, parte 2 y 3, parte 1 y 3 ...) ¡tarda 2 minutos! en sacar resultado.

aclaro que el pl segun si recibe unos parametros u otros construye la sql con mas o menos partes.

espero que alguin me resuelva la duda y asi poder corregir lo que sea para que sea siempre rapida.
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:Me pueden resolver un conflicto??

Publicado por Ricardo Rojas (6 intervenciones) el 05/08/2009 13:41:04
Has intentado hacer un explain plan de las consultas ya creadas? Y lo otro que podrías hacer es un test del PL para ver si recibes bien los parámetros que indicas. El test desde el toad o plsql developer o el que uses.
Saludos,
Ricardo Rojas.
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