Analise de uma View
Enviado: Seg, 27 Ago 2012 9:00 am
Bom dia pessoal, estou estudando Oracle e hoje estou com um problema nesta view, gostaria de saber de vocês se existe algum problema de sintaxe ou utilização de funções nesta viu que estou apresentando abaixo, quando realizo uma consulta nela, a consulta demora em torno de 20 segundos para me retornar a informação. Hoje esta viu retorna em torno de 87.712 linhas. Levando em consideração a quantidade de informações o tempo é este mesmo?
Agradeço a atenção de todos.
Agradeço a atenção de todos.
SELECT DECODE (SS.SS_TIPOSS,
1, 'SERVICO',
2, 'MANUT',
3, 'LUBRIFICACAO',
4, 'VIBRACAO')
TIPOSS,
EQ.EQ_TAG,
SS.SS_CODIGO,
SS.SS_DTABERTURA,
SS.SS_DTFECHAMENTO,
SS.SS_TPMANUTENCAO,
SS.SS_OBS,
SS.SS_PARADAUF,
SS.SS_DTPARADA,
SS.SS_CODUSUARIO,
SS.SS_STATUS,
SS.SS_TIPOSS,
SS.EQ_CODIGO,
SS.AREA_CODIGO,
SS.UF_CODIGO,
SS.CC_CODIGO,
SS.TPS_CODIGO,
DECODE (SS.SS_TIPOSS, 2, EQ.UF_CODIGO, SS.UFS_CODIGO) AS UFS_CODIGO,
SS.UN_CODIGO,
SS.SS_DTINICIO,
SS.SS_TPOCORRENCIA,
UF.UF_SIGLA,
V.PES_NOME,
V1.PES_NOME RESP,
TP.TPS_DESCRICAO,
UN.UN_SIGLA,
EQ.EQ_TAGISO,
NVL2 (SS.SS_DTPARADA, 'SIM', 'não') PARADO,
SS_GRAVIDADE,
SS_URGENCIA,
SS_TENDENCIA,
UN.UN_DESCRICAO,
AREA.AREA_DESCRICAO,
UF.UF_DESCRICAO,
UF2.UF_DESCRICAO,
CC.CC_DESCRICAO,
D.DEF_CODIGO,
D.DEF_DESCRICAO,
EQ.EQ_GRAVIDADE,
(CASE
WHEN SS.SS_TPOCORRENCIA > 0 AND SS.SS_TPOCORRENCIA <= 15
THEN
'BAIXO'
WHEN SS.SS_TPOCORRENCIA > 15 AND SS.SS_TPOCORRENCIA <= 30
THEN
'MÉDIO'
WHEN SS.SS_TPOCORRENCIA > 30
THEN
'ALTO'
ELSE
NULL
END)
GRAV_SERVICO,
DECODE (EQ.EQ_GRAVIDADE,
'1', 'BAIXO',
'2', 'MÉDIO',
'3', 'ALTO',
'4', 'EXTREMO')
GRAV_MANUT,
D.DEF_PRAZO,
SS.SS_DTABERTURA
+ SUBSTR (DEF_PRAZO, 1, 2) / 24
+ SUBSTR (DEF_PRAZO, 4, 2) / 1440
+ SUBSTR (DEF_PRAZO, 7, 2) / 86400
DTPRAZO,
OS_DATA,
OS.OS_DTPREVISAO,
OS.OS_DTFECHAMENTO,
TP.TPS_PRAZOATENDIMENTO,
TP.TPS_PRAZOSOLUCAO,
SS.SS_DTABERTURA
+ SUBSTR (TPS_PRAZOATENDIMENTO, 1, 2) / 24
+ SUBSTR (TPS_PRAZOATENDIMENTO, 4, 2) / 1440
+ SUBSTR (TPS_PRAZOATENDIMENTO, 7, 2) / 86400
DTPRAZOATEND_SERV,
OS_DATA
+ SUBSTR (TPS_PRAZOSOLUCAO, 1, 2) / 24
+ SUBSTR (TPS_PRAZOSOLUCAO, 4, 2) / 1440
+ SUBSTR (TPS_PRAZOSOLUCAO, 7, 2) / 86400
DTPRAZOSOLUCAO_SERV,
TO_DATE (TO_CHAR (OS_DATA, 'DD/MM/YYYY HH24:MI/SS'),
'DD/MM/YYYY HH24:MI/SS')
+ ( (SUBSTR (tps_prazosolucao, 1, 2) * 60 * 60)
+ (SUBSTR (tps_prazosolucao, 4, 2) * 60)
+ (SUBSTR (tps_prazosolucao, 7, 2)))
* 75
/ 100
/ (24 * 60 * 60)
DTAMARELASOLUCAO_SERV,
TO_DATE (TO_CHAR (SS_DTABERTURA, 'DD/MM/YYYY HH24:MI/SS'),
'DD/MM/YYYY HH24:MI/SS')
+ ( (SUBSTR (tps_prazoatendimento, 1, 2) * 60 * 60)
+ (SUBSTR (tps_prazoatendimento, 4, 2) * 60)
+ (SUBSTR (tps_prazoatendimento, 7, 2)))
* 75
/ 100
/ (24 * 60 * 60)
DTAMARELAATEND_SERV,
SS.SS_DTABERTURA
+ SUBSTR (D.DEF_PRAZO, 1, 2) / 24
+ SUBSTR (D.DEF_PRAZO, 4, 2) / 1440
+ SUBSTR (D.DEF_PRAZO, 7, 2) / 86400
DTPRAZOATEND_MANUT,
OS_DATA
+ SUBSTR (A.ACAO_PRAZO, 1, 2) / 24
+ SUBSTR (A.ACAO_PRAZO, 4, 2) / 1440
+ SUBSTR (A.ACAO_PRAZO, 7, 2) / 86400
DTPRAZOSOLUCAO_MANUT,
TO_DATE (TO_CHAR (SS_DTABERTURA, 'DD/MM/YYYY HH24:MI/SS'),
'DD/MM/YYYY HH24:MI/SS')
+ ( (SUBSTR (D.DEF_PRAZO, 1, 2) * 60 * 60)
+ (SUBSTR (D.DEF_PRAZO, 4, 2) * 60)
+ (SUBSTR (D.DEF_PRAZO, 7, 2)))
* 75
/ 100
/ (24 * 60 * 60)
DTAMARELAATEND_MANUT,
TO_DATE (TO_CHAR (OS_DATA, 'DD/MM/YYYY HH24:MI/SS'),
'DD/MM/YYYY HH24:MI/SS')
+ ( (SUBSTR (A.ACAO_PRAZO, 1, 2) * 60 * 60)
+ (SUBSTR (A.ACAO_PRAZO, 4, 2) * 60)
+ (SUBSTR (A.ACAO_PRAZO, 7, 2)))
* 75
/ 100
/ (24 * 60 * 60)
DTAMARELASOLUCAO_MANUT,
DECODE (SS_TPMANUTENCAO,
1, 'CORRETIVA',
2, 'PREDITIVA',
3, 'PREVENTIVA',
NULL)
SS_TPMANUTENCAO_DESC,
UF2.UF_SIGLA,
UF3.UF_SIGLA UFEQUIP,
EQ.TUN_CODIGO,
EQ.TUN_SIGLA,
EQ.TUN_DESCRICAO,
EQ.AREA_CODIGO,
EQ.AREA_DESCRICAO,
EQ.CC_CODIGO,
EQ.EQ_CCDESCRICAO,
EQ.UF_CODIGO,
EQ.UF_SIGLA,
EQ.UF_DESCRICAO,
EQ.OPE_CODIGO,
EQ.OPE_DESCRICAO,
EQ.CONJ_CODIGO,
EQ.CONJ_DESCRICAO,
EQ.EQ_STATUS,
EQ.EQ_DESCRICAO,
EQ.EQ_OBS,
EQ.EQA_CODIGO,
EQ.EQA_TAG,
EQ.EQA_TAGISO,
EQ.EQA_DESCRICAO,
OS.OS_CODIGO,
(CASE
WHEN AC.ACE_ACEITE IS NULL AND SS.SS_STATUS = 'ABERTO'
THEN
'A'
WHEN AC.ACE_ACEITE IS NULL AND SS.SS_STATUS = 'ENCERRADO'
THEN
'P'
WHEN AC.ACE_ACEITE IS NULL AND SS.SS_STATUS = 'ANDAMENTO'
THEN
'D'
WHEN AC.ACE_ACEITE = 'N' AND SS.SS_STATUS = 'ANDAMENTO'
THEN
'N'
WHEN AC.ACE_ACEITE = 'N' AND SS.SS_STATUS = 'ENCERRADO'
THEN
'P'
WHEN AC.ACE_ACEITE = 'S'
THEN
'S'
ELSE
NULL
END)
ACEITE,
OS.OS_OBS
FROM WEBUJU.SAMI_SS SS,
WEBUJU.SAMI_OS OS,
UAAWEB.VISAO_USUARIO V,
UAAWEB.VISAO_USUARIO V1,
WEBUJU.SAMI_EQUIPAMENTO_TRANSF EQ,
WEBUJU.SAMI_TIPOSERVICO TP,
WEBUJU.SAMI_UNIDADE_FUNCIONAL UF,
WEBUJU.SAMI_UNIDADE_FUNCIONAL UF2,
WEBUJU.SAMI_UNIDADE_FUNCIONAL UF3,
WEBUJU.SAMI_CENTROCUSTO CC,
WEBUJU.SAMI_UNIDADE UN,
WEBUJU.SAMI_AREA AREA,
WEBUJU.SAMI_DEFEITO D,
WEBUJU.SAMI_ACAO A,
(SELECT A1.OS_CODIGO, A1.ACE_ACEITE
FROM SAMI_ACEITE A1
WHERE A1.ACE_DATA >= (SELECT MAX (A2.ACE_DATA)
FROM SAMI_ACEITE A2
WHERE A2.OS_CODIGO = A1.OS_CODIGO)) AC
--WEBUJU.SAMI_ACEITE AC
WHERE OS.ACAO_CODIGO = A.ACAO_CODIGO(+)
AND SS.DEF_CODIGO = D.DEF_CODIGO(+)
AND SS.TPS_CODIGO = TP.TPS_CODIGO(+)
AND EQ.UF_CODIGO = UF3.UF_CODIGO(+)
AND SS.EQ_CODIGO = EQ.EQ_CODIGO(+)
AND SS.CC_CODIGO = CC.CC_CODIGO(+)
AND SS.SS_CODUSUARIO = V.COD_USUARIO
AND OS.OS_CODRESPONSAVEL = V1.COD_USUARIO(+)
AND SS.UFS_CODIGO = UF2.UF_CODIGO(+)
AND SS.SS_CODIGO = OS.SS_CODIGO(+)
AND SS.UF_CODIGO = UF.UF_CODIGO
AND SS.UN_CODIGO = UN.UN_CODIGO
AND SS.AREA_CODIGO = AREA.AREA_CODIGO
AND OS.OS_CODIGO = AC.OS_CODIGO(+);