Olá boa noite, seguinte meu amigo, esse dias tive um problema parecido aqui na 
empresa, ha algum tempo eu fiz um relatório de comissão aqui para empresa, para 
vc ter idéia do tamanho da coisa, onde eu trabalho são faturadas umas 10.000 
notas por semana, fim do mes esse numero quase dobra. resumindo o relatório que 
antes rodava em 6 minutos todo ajustado no 9i r2 nesta semana estava demorando 
mais de uma hora e nada.!
bom o que fiz e normanente faço para ver como está o sql, dei uma mxida basica 
no sql de +- dois dias, ele voltou a fazer em menos de UM minuto no oracle 10G 
como que normalmente faço.

==>>pego bloco a bloco de meus sql e vou executando eles de forma separada, e 
faço um set autotrace traceonly para ver como que está a coisa, quando é algo 
mais complicado ai faço um tkprof pois ai sim vc sabe onde realmente está 
custando mais...!!!, outra coisa vi que seu sql vc está usando hints, detalhe 
por regra, o pessoal aqui da lista, Chiappa, Marcio, Reginaldo entre outros que 
sempre nos ajudam,  assim como nos manuais da oracle sugere que vc trabalhe 
baseado em custo pois por regra se não me falhe a memoria são 15 e desde do 
oracle 8 não é dado mais suporte 
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96533/rbo.htm#721,
 ou seja, ai ja dá para vc mexer um pouco em seu sql, colocando hints de custo 
nele.

==> vc deve verificar a coleta de estatistica das tabela, estatistica do 
sistema, ver se não tem como vc tirar esses CASE, de dentro da soma, deixar 
para fazer esse tipo de coisa em um nivel acima, depois das informações 
agrupadas, verificar se ele está usando a area temporaria ou fazendo esse 
trabalho no disco, sendo assim tbm ajuda a ficar lento., uma outra coisa q 
normalmente faço é pegar um bloco que pode interferir e faço um insert as 
select, e depois trabalho com esses dados, claro que com isso vc pode ter mais 
problemas, tem q ter certos cuidados.

bom normalmente é isso. 

espero ter ajudado

att,

Welvis Douglas da Silva Moretto
msn  - [EMAIL PROTECTED]
Fone - (43)9917-1766
Tec. Processamento de Dados
Pos - Engenharia de Software
Pos - Banco de Dados Oracle
Mestrando - Engenharia de Produção e Sistemas 
Areas de interesse 
- Estatistica
- Banco de Dados
- Java, Delphi.
- Data Mining
- Redes Neurais Artificiais.

----- Mensagem original ----
De: Marcelo <[EMAIL PROTECTED]>
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quinta-feira, 30 de Agosto de 2007 15:42:03
Assunto: RES: Res: [oracle_br] Tuning SQL

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] e.com.br>
[EMAIL PROTECTED] e.com.br
þ - WWW: www.autopratense. com.br <blocked::http://www.autoprat ense.com. br/> 


_____ 

De: [EMAIL PROTECTED] os.com.br [mailto:[EMAIL PROTECTED] os.com.br] Em
nome de fabiopdb
Enviada em: quinta-feira, 30 de agosto de 2007 14:34
Para: [EMAIL PROTECTED] os.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
<welvinho18@ ...> 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]





      Flickr agora em português. Você clica, todo mundo vê.
http://www.flickr.com.br/

[As partes desta mensagem que não continham texto foram removidas]

Responder a