Bom dia. Orfeu, sem conhecer as tabelas envolvidas, plano de execução e pelo menos um trace, suspeito que ninguém vai conseguir te ajudar aqui... hehehe
Att,/Regards, Vitor Jr. Infraestrutura / Infrastructure Team Oracle 11g DBA Certified Professional - OCP Oracle Certified Expert, Oracle Real Application Clusters 11g and Grid Infrastructure Administrator - OCE Oracle Database 11g Performance Tuning Certified Expert - OCE Oracle Exadata 11g Certified Implementation Specialist Oracle Certified Associate, MySQL 5 mail, gtalk e msn: vitorj...@gmail.com http://certificacaobd.com.br/ skype: vjunior1981 https://mybizcard.co/vitor.jr.385628 2015-07-08 9:26 GMT-03:00 Orfeu Lima orfeu.l...@gmail.com [oracle_br] < oracle_br@yahoogrupos.com.br>: > > > bom dia a todos. > O select abaixo está executando com um tempo de 20s, e gostaria de pedir a > ajuda para poder estar melhorando. > Segue abaixo o script e em anexo o plano de execução. > Obrigado. > select cd_terminal as "cd" > , cast(data_captura as timestamp) as "dataUltima" > , cast(data_adm as timestamp) as "dataFechamento" > , CASE tipoUltima WHEN 4 THEN 'SAIDA' ELSE 'ENTRADA' END as "fluxo" > , valorSaques as "valorSaques" > , valorRecargas as "valorRecargas" > , valorDepositos as "valorDepositos" > , totalSaques as "totalSaques" > , totalRecargas as "totalRecargas" > , totalDepositos as "totalDepositos" > , denominacoes as "denominacaoUltima" > , dados_adm as "denominacaoFechamento" from ( > with r as ( > select t.cd_terminal > , c.cd_tipo_transacao as tipo > , sum(t.valor) as valor > , count(*) as total > from transacao_siscap t, codigo_transacao c, ( > select busca.terminal > , busca.tipo as tipoUltima > , busca.data_captura > , busca.denominacoes > , busca.data_adm > , busca.dados_adm > from ( > select trn.cd_terminal as terminal, trn.*, adm.* from ( > select ultima_adm.cd_terminal, > data_captura as data_adm, > dados_adm > from ( > select adm.cd_terminal, nvl(max(id), 0) as id > from transacao_adm_siscap adm, > terminal atm > where adm.cd_terminal = atm.cd_terminal > and cd_proc = 310000 > and atm.ativo = 1 > group by adm.cd_terminal > ) ultima_adm, transacao_adm_siscap adm > where ultima_adm.id = adm.id > ) adm, ( > select trn.cd_terminal, cod.cd_tipo_transacao as tipo > , trn.data_captura as data_captura > , e.denominacao_movimentada as denominacoes from ( > select trn.cd_terminal, max(data_captura) as data_captura > from transacao_siscap trn, transacao_ext_siscap e, terminal atm > where trn.cd_terminal = atm.cd_terminal > and trn.id = e.transacao_id > and e.denominacao_movimentada is not null > and atm.ativo = 1 > and cd_status in (03, 04, 05) > group by trn.cd_terminal > ) ultima, transacao_siscap trn, transacao_ext_siscap e, > codigo_transacao cod > where trn.cd_terminal = ultima.cd_terminal > and cod.cd_proc = trn.cd_proc > and ultima.data_captura = trn.data_captura > and trn.id = e.transacao_id > ) trn > where adm.cd_terminal = trn.cd_terminal > ) busca > ) busca1 > where t.cd_proc = c.cd_proc > and t.cd_terminal = busca1.terminal > and t.data_captura between busca1.data_adm and busca1.data_captura > and t.cd_status IN ('03', '04', '05') > and c.cd_tipo_transacao in (7,4,2,13) > group by t.cd_terminal > , c.cd_tipo_transacao > ) select t.cd_terminal AS cd_terminal > , nvl((select valor from r where tipo = 4 and r.cd_terminal = > t.cd_terminal), 0) as valorSaques > , nvl((select valor from r where tipo = 7 and r.cd_terminal = > t.cd_terminal), 0) > +nvl((select valor from r where tipo = 13 and r.cd_terminal = > t.cd_terminal), 0) as valorRecargas > , nvl((select valor from r where tipo = 2 and r.cd_terminal = > t.cd_terminal), 0) as valorDepositos > , nvl((select total from r where tipo = 4 and r.cd_terminal = > t.cd_terminal), 0) as totalSaques > , nvl((select total from r where tipo = 7 and r.cd_terminal = > t.cd_terminal), 0) > +nvl((select total from r where tipo = 13 and r.cd_terminal = > t.cd_terminal), 0) as totalRecargas > , nvl((select total from r where tipo = 2 and r.cd_terminal = > t.cd_terminal), 0) as totalDepositos > from terminal t > where t.ativo = 1 > ) busca2, ( > select busca.terminal > , busca.tipoUltima > , busca.data_captura > , busca.denominacoes > , busca.data_adm > , busca.dados_adm > from ( > select trn.cd_terminal as terminal, trn.cd_tipo_transacao as > tipoUltima, trn.*, adm.* from ( > select ultima_adm.cd_terminal, > data_captura as data_adm, > dados_adm > from ( > select adm.cd_terminal, nvl(max(id), 0) as id > from transacao_adm_siscap adm, > terminal atm > where adm.cd_terminal = atm.cd_terminal > and cd_proc = 310000 > and atm.ativo = 1 > group by adm.cd_terminal > ) ultima_adm, transacao_adm_siscap adm > where ultima_adm.id = adm.id > ) adm, ( > select trn.cd_terminal > , c.cd_tipo_transacao > , trn.data_captura as data_captura > , e.denominacao_movimentada as denominacoes from ( > select trn.cd_terminal, max(data_captura) as data_captura > from transacao_siscap trn, transacao_ext_siscap e, terminal atm > where trn.cd_terminal = atm.cd_terminal > and trn.id = e.transacao_id > and e.denominacao_movimentada is not null > and atm.ativo = 1 > and cd_status in (03, 04, 05) > group by trn.cd_terminal > ) ultima, transacao_siscap trn, transacao_ext_siscap e, > codigo_transacao c > where trn.cd_terminal = ultima.cd_terminal > and trn.cd_proc = c.cd_proc > and ultima.data_captura = trn.data_captura > and trn.id = e.transacao_id > ) trn > where adm.cd_terminal = trn.cd_terminal > ) busca > ) busca3 > where busca2.cd_terminal = busca3.terminal > > [As partes desta mensagem que não continham texto foram removidas] > > >