SELECT * FROM (
SELECT * FROM (
SELECT '1112468381_PRC1_INC',sysdate,TRUNC((p.F_CREACION-i.F_CREACION)*86400),TRUNC((i.F_CREACION-i.FECHA_PRESENTACION)*86400),TRUNC((sysdate-cast(from_tz(cast(p.F_CREACION as timestamp),'GMT') at time zone 'CET' as date))*86400),'','','','', '','','','','','','','','','', p.ID_PROCEDIMIENTO,p.SECUENCIA,p.USUARIO,p.GRUPO,p.TABLA,p.ACCION,p.TEXTO,p.C1,p.C2,p.C3, p.ORIGEN_ACCION,'','','','',i.ESTADO,i.SEVERIDAD,i.NDAI,i.TABLA_RAIZ,i.SEC_BOLETIN_RAIZ, i.OMEGA1,i.SERIE_EXTERNA,i.UNIDAD_RESPONSABLE,i.UNIDAD_CREADORA,i.ESTADO_RESPONSABILIDAD,i.COD_JALON,i.ID1,i.ID2,i.ID3,i.ID4, i.REPERCUSION,i.TIPO_INCOMUNICACION,i.ESTADO_SAF,i.ESTADO_ACTUACION,i.ESTADO_GESTION,i.NUM_ACTUACIONES,i.NUM_ACTUACIONES_IM,i.COD_RED,i.AREA,i.RED, i.TIPO_ELEMENTO,i.TIPO_SINTOMA,i.NOM_PROVINCIA,i.PROVINCIA,i.TEMP1,i.TEMP2,i.TEMP3,i.TEMP4,i.TEMP5,i.TEMP6, i.TEMP7,i.AUX1,i.AUX2,i.AUX3,cast(from_tz(cast(i.FECHA_PRESENTACION as timestamp),'GMT') at time zone 'CET' as date),cast(from_tz(cast(i.F_CREACION as timestamp),'GMT') at time zone 'CET' as date) as I_F_CREACION,i.FECHA_AFECTACION_SERVICIO,i.FECHA_FRANQUEO,i.CADENA_DELEGACION,i.ESTADO_BOL_RAIZ, '','','','','',
CASE
WHEN i.TIPO_ELEMENTO='Equipo' THEN (SELECT E.MODO||'â'||E.COD_CLAVE||'â'||E.CLASE||'â'||E.TECNOLOGIA||'â'||E.TIPO_ELEMENTO_GENERICO||'â'||E.MODELO||'â'|| E.CATEGORIA_EDIFICIO ||'â'|| E.CODIGO_UBICACION ||'â'|| E.DESC_CLAVE ||'â'|| E.DESC_PRIMARIA ||'â'|| E.DESC_SECUNDARIA FROM IGRI.EQUIPO E WHERE E.SECUENCIA=i.SECUENCIA)
WHEN i.TIPO_ELEMENTO='Sistemas de Transporte' THEN (SELECT S.MODO||'â'||S.COD_SISTEMA||'â'||S.CLASE||'â'||S.JERARQUIA||'â'||S.TIPO_ELEMENTO_GENERICO||'â'||'FREE6'||'â'||'FREE7'||'â'||'FREE8'||'â'||'FREE9'||'â'||'FREE10'||'â'||'FREE11' FROM IGRI.SISTEMA S WHERE S.SECUENCIA=i.SECUENCIA )
ELSE 'ââââââââââ' END AS INV
FROM IGRI.PROCEDIMIENTO p,IGRI.BOL_INC_DE_RED i
WHERE
i.TABLA = p.TABLA AND
i.SECUENCIA = p.SECUENCIA AND
p.ID_PROCEDIMIENTO > '1112468381'
UNION ALL
SELECT '1112468381_PRC2_INC',sysdate,TRUNC((p.F_CREACION-i.F_CREACION)*86400),TRUNC((i.F_CREACION-i.FECHA_PRESENTACION)*86400),TRUNC((sysdate-cast(from_tz(cast(p.F_CREACION as timestamp),'GMT') at time zone 'CET' as date))*86400),'','','','', '','','','','','','','','','', p.ID_PROCEDIMIENTO,p.SECUENCIA,p.USUARIO,p.GRUPO,p.TABLA,p.ACCION,p.TEXTO,p.C1,p.C2,p.C3, p.ORIGEN_ACCION,'','','','',i.ESTADO,i.SEVERIDAD,i.NDAI,i.TABLA_RAIZ,i.SEC_BOLETIN_RAIZ, i.OMEGA1,i.SERIE_EXTERNA,i.UNIDAD_RESPONSABLE,i.UNIDAD_CREADORA,i.ESTADO_RESPONSABILIDAD,i.COD_JALON,i.ID1,i.ID2,i.ID3,i.ID4, i.REPERCUSION,i.TIPO_INCOMUNICACION,i.ESTADO_SAF,i.ESTADO_ACTUACION,i.ESTADO_GESTION,i.NUM_ACTUACIONES,i.NUM_ACTUACIONES_IM,i.COD_RED,i.AREA,i.RED, i.TIPO_ELEMENTO,i.TIPO_SINTOMA,i.NOM_PROVINCIA,i.PROVINCIA,i.TEMP1,i.TEMP2,i.TEMP3,i.TEMP4,i.TEMP5,i.TEMP6, i.TEMP7,i.AUX1,i.AUX2,i.AUX3,cast(from_tz(cast(i.FECHA_PRESENTACION as timestamp),'GMT') at time zone 'CET' as date),cast(from_tz(cast(i.F_CREACION as timestamp),'GMT') at time zone 'CET' as date) as I_F_CREACION,i.FECHA_AFECTACION_SERVICIO,i.FECHA_FRANQUEO,i.CADENA_DELEGACION,i.ESTADO_BOL_RAIZ, '','','','','',
CASE
WHEN i.TIPO_ELEMENTO='Equipo' THEN (SELECT E.MODO||'â'||E.COD_CLAVE||'â'||E.CLASE||'â'||E.TECNOLOGIA||'â'||E.TIPO_ELEMENTO_GENERICO||'â'||E.MODELO||'â'|| E.CATEGORIA_EDIFICIO ||'â'|| E.CODIGO_UBICACION ||'â'|| E.DESC_CLAVE ||'â'|| E.DESC_PRIMARIA ||'â'|| E.DESC_SECUNDARIA FROM IGRI.EQUIPO E WHERE E.SECUENCIA=i.SECUENCIA)
WHEN i.TIPO_ELEMENTO='Sistemas de Transporte' THEN (SELECT S.MODO||'â'||S.COD_SISTEMA||'â'||S.CLASE||'â'||S.JERARQUIA||'â'||S.TIPO_ELEMENTO_GENERICO||'â'||'FREE6'||'â'||'FREE7'||'â'||'FREE8'||'â'||'FREE9'||'â'||'FREE10'||'â'||'FREE11' FROM IGRI.SISTEMA S WHERE S.SECUENCIA=i.SECUENCIA )
ELSE 'ââââââââââ' END AS INV
FROM IGRI.PROCEDIMIENTO_2 p,IGRI.BOL_INC_DE_RED i
WHERE
i.TABLA = p.TABLA AND
i.SECUENCIA = p.SECUENCIA AND
p.ID_PROCEDIMIENTO > '1112468381'
) ORDER BY ID_PROCEDIMIENTO
) WHERE ROWNUM <= '3000'
In the tests that I have been carrying out my conclusions are the following:
- In the where it penalizes i.TABLA = p.TABLA AND if this takes away the time improves I do not know the reason.
- When in the select there are no operations of change time zones the time improves.
It seems that transformations of the type:
- cast(from_tz(cast(p.F_CREACION as timestamp),'GMT') at time zone 'CET' as date)
- TRUNC((p.F_CREACION-i.F_CREACION)*86400) penalize excessively