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]

Responder a