Fabio, Eu faria primeiro uma analise de cada subquery com seu plano de execução. Verifique a possibilidade de criar algum indice para melhorar o acesso a tabelas. Um detalhe que eu percebi é que você comentou a coluna REFERENCIA na segunda subquery. O UNION funciona se as colunas de todas as subquerys foram do mesmo tipo na mesma posicão. At. Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda ( - Fone: (0XX54) 3242-3615 ( - Fax: (0XX54) 3242-3648 * - E-mail: <blocked::mailto:[EMAIL PROTECTED]> [EMAIL PROTECTED] þ - WWW: www.autopratense.com.br <blocked::http://www.autopratense.com.br/>
_____ De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de fabiopdb Enviada em: quinta-feira, 30 de agosto de 2007 14:34 Para: oracle_br@yahoogrupos.com.br Assunto: Re: Res: [oracle_br] Tuning SQL Cara , a versão do meu banco é 10g e esta rodando em cima de windows(2003 server) essa consulta esta demorando 7hs o fluxo de dados e grande mais acho que tem alguma coisa de errado, a tabela nao tem nem 500 mil registros. Quem puder me ajudar eu agradeço... --- Em [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br, Welvis Douglas Silva Moreto <[EMAIL PROTECTED]> escreveu > > Cara qual a versão do seu banco???? > > > ----- Mensagem original ---- > De: fabiopdb <[EMAIL PROTECTED]> > Para: [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br > Enviadas: Quinta-feira, 30 de Agosto de 2007 11:56:44 > Assunto: [oracle_br] Tuning SQL > > Amigos estou com um problema nessa consulta será alguem (iluminado) > pode me ajudar pois esta consulta esta demorando 7hs !!!! > Se alguem tiver alguma ideia eu agradeço muito. > > CREATE OR REPLACE VIEW VENDAS_INDIRETAS AS > SELECT /*+rule*/ cod_classe_extra, > ds_classe_extra, > cod_extra, > desc_ex, > COUNT(qtd_servico) qtd_servico, > SUM(VALOR) VALOR, > REFERENCIA, > GRUPO_INDIRETAS > > FROM ( > --Venda de Serviços Financiados > SELECT /*+rule*/tcex. COD_CLASSE_ EXTRA, > tcex.DS_CLASSE_ EXTRA, > tex.COD_EXTRA, > tex.DESC_EX, > COUNT(vpc.ident_ parc) qtd_servico, > SUM(vpc.TOTALDIV) VALOR, > to_date('01' || '/' || TO_CHAR(vpc. dt_parcelamento, > 'mm/yyyy'), 'dd/mm/yyyy' ) REFERENCIA, > > (case > when tcex.cod_classe_ extra in (1,2,3,8,9,10, 14) then > 'AGUA' > when tcex.cod_classe_ extra in (4,5) then > 'ESGOTO' > end) GRUPO_INDIRETAS > > FROM TAB_EXTRA tex, VEW_DS_PARCELAMENTO vpc, > TAB_CLASSE_EXTRA tcex > WHERE tex.COD_EXTRA = vpc.COD_EXTRA > AND tex.COD_CLASSE_ EXTRA = tcex.COD_CLASSE_ EXTRA > AND vpc.DT_CANCELADO IS NULL > AND vpc.cod_tipo_ parc = 2 > GROUP BY tcex.COD_CLASSE_ EXTRA, > tcex.DS_CLASSE_ EXTRA, > tex.COD_EXTRA, > tex.DESC_EX, > vpc.dt_parcelamento > > UNION > > --Venda de Serviços - NFA pagamento a vista > select /*+rule*/tc. cod_classe_ extra, > tc.ds_classe_ extra, > v.cod_extra, > te.desc_ex, > count(v.ident_ extra) qtd_servico, > sum(v.valor) VALOR, > -- to_char(v.data_ ref, 'dd/mm/yyyy' ) REFERENCIA, > v.data_ref REFERENCIA, > > (case > when tc.cod_classe_ extra in (1,2,3,8,9,10, 14) then > 'AGUA' > when tc.cod_classe_ extra in (4,5) then > 'ESGOTO' > end) GRUPO_INDIRETAS > > from vew_ds_faturamento_ detalhado v, > tab_extra te, > tab_classe_extra tc > where te.cod_extra = v.cod_extra > and tc.cod_classe_ extra = te.cod_classe_ extra(+) > and v.in_original = 1 > and v.ident_conta is not null > and v.cod_tipo_nf = 2 > group by tc.cod_classe_ extra, > tc.ds_classe_ extra, > v.cod_extra, > te.desc_ex, > v.data_ref) > > WHERE cod_classe_extra not in (6, 7, 11, 12, 13, 15, 16, 17, 19, 20) > GROUP BY cod_classe_extra, ds_classe_extra, cod_extra, > desc_ex,REFERENCIA, GRUPO_INDIRETAS > ORDER BY DS_CLASSE_EXTRA, DESC_EX > > > > > > Flickr agora em português. Você clica, todo mundo vê. > http://www.flickr. <http://www.flickr.com.br/> com.br/ > > [As partes desta mensagem que não continham texto foram removidas] > [As partes desta mensagem que não continham texto foram removidas]