Please let me know the ways in which I can tune this query for better performance/execution time.
PS-it was developed by some another person and handed over to me.
the query is attached (I know it's a huge one!)--
Any idea on how to handle joins and subquery with aggregrates will be really helpful.
SELECT /*+MONITOR*/ gcibjdnf.danfe,
gcibjdnf.bjd_situacao,
gcibjdnf.obs_rejeicao,
gcibjdnf.bjd_tipo_cobranca,
gcibjdnf.bjd_data_vencto_cbs,
(SELECT SUM(gcinfitens.item_valor_contratar)
FROM gcinfitens
WHERE gcinfitens.danfe = gcibjdnf.danfe) AS nf_vl_contratar,
(SELECT Max(id_contgrupo) FROM gcrcontitens WHERE gcrcontitens.danfe = gcibjdnf.danfe) AS id_contgrupo,
(SELECT MIN(nu_interv)
FROM gcrcondper
WHERE gcrcondper.id_cond = gcccond.id_cond
) AS nu_min_prz,
(SELECT MAX(nu_interv)
FROM gcrcondper
WHERE gcrcondper.id_cond = gcccond.id_cond
) AS nu_max_prz,
priper.vl_taxa AS nu_taxa,
priper.cd_tp_taxa,
priper.cd_indicador,
gcccond.nm_cond,
gcccond.cd_tp_ctr,
priper.sg_mod AS sg_mod_cond,
gcccond.dt_validade,
gcccond.cd_sit AS cd_sit_cond,
gcccond.nu_car_prz,
gcccond.cd_base_carencia,
gcccond.nu_car_desc,
apcconc.cd_loja,
apcconc.cd_concess,
apcconc.cd_conc_mat,
apcconc.nm_conc,
apcconc.nm_apelido,
apcconc.cd_tp_mercado,
dnccontrfundo.dt_emis_ctr
FROM gcibjdnf
LEFT JOIN apcconc ON TO_CHAR(apcconc.cd_sap_dealer) = gcibjdnf.dealer_sap
LEFT JOIN gcccond ON gcccond.id_cond = gcibjdnf.id_cond
LEFT JOIN dnccontrfundo ON dnccontrfundo.danfe = gcibjdnf.danfe
AND dnccontrfundo.cd_sit NOT IN ('CA','RE')
LEFT JOIN gcrcondper priper ON priper.id_cond = gcccond.id_cond
AND priper.sq_per = 1
WHERE (( apcconc.cd_concess = '1586297'
OR apcconc.cd_conc_mat = '1586297') AND gcibjdnf.bjd_situacao = 'I' AND bjd_sit_interna IN ('NO', 'SD'))
ORDER BY apcconc.nm_apelido, danfe