› Fóruns › SQL e PL/SQL › Ajuda com Select – causando lentidão no banco › Ajuda com Select – causando lentidão no banco
[quote=”edilene.ribeiro”:1xp6gehk]Olá Pessoal,
Sou novata mas quero muito aprender.
O DBA da empresa que trabalho diz que o select abaixo está causando muita lentidão no banco.
Utilizo a ferramenta Toad onde fiz o Explain Plain e não deu acesso full em nenhuma tabela. Pelo que vi está fazendo acesso Range Scan em 4 tabelas….mas full em nenhuma.
Se alguém puder me dar algum dica do que melhorar…. pois já tentei de tudo e não sei mais o que fazer.
desde já agradeço muito.[/quote]
eis o select:
SELECT espe_evt_cod esp_princ,
DECODE (a.espe_evt_cod,
99999999, a.exame,
DECODE (NVL (b.pcdm_grup_espe_cod, -1), -1, 10014, a.exame)
) proced,
a.exame
FROM hist_exame a, pcdm_pcm b, espe_esp f
WHERE :pr_local_id IS NULL
AND a.mes_ref BETWEEN TO_DATE (:pr_mes_ref, ‘mm/yyyy’)
AND TO_DATE (:pr_mes_ref2, ‘mm/yyyy’)
AND a.grp_emp_id = :pr_grp_emp_id
AND a.prest_id = :pr_prest_id
AND a.vlr_pago > 0
AND b.pcdm_cod(+) = a.exame
AND f.espe_cod(+) = a.exame
UNION
SELECT espe_evt_cod esp_princ,
DECODE (a.espe_evt_cod,
99999999, a.exame,
DECODE (NVL (b.pcdm_grup_espe_cod, -1), -1, 10014, a.exame)
) proced,
a.exame
FROM hist_exame a,
pcdm_pcm b,
pred_prt_edr c,
tiep_prt_edr_tip d,
recf_fxa_cep_rgi e,
espe_esp f
WHERE :pr_local_id IS NOT NULL
AND a.mes_ref BETWEEN TO_DATE (:pr_mes_ref, ‘mm/yyyy’)
AND TO_DATE (:pr_mes_ref2, ‘mm/yyyy’)
AND a.grp_emp_id = :pr_grp_emp_id
AND a.prest_id = :pr_prest_id
AND a.vlr_pago > 0
AND b.pcdm_cod(+) = a.exame
AND f.espe_cod(+) = a.exame
AND c.pred_prtd_cod = a.prest_id
AND d.tiep_pred_cod = c.pred_cod
AND d.tiep_tip_edr = 3
AND e.recf_etor_cod = :pr_etor_cod
AND e.recf_rgio_cod = :pr_local_id
AND e.recf_cepf_cep_ini = c.pred_cepe_cod
GROUP BY espe_evt_cod, a.exame, b.pcdm_grup_espe_cod, f.espe_cod
ORDER BY 1 ASC