A coleta automática de estatísticas é um "apanhado" do banco de dados, 
utilizando o mesmo modo para todas as tabelas. Convém você fazer a 
coleta específica destas tabelas e índices envolvidos no seu problema, 
definindo manualmente o parâmetro estimate_percent para o que achar 
apropriadoe computando os índices. Dá uma olhada na resposta do chiappa 
para sua questão que, como era de se esperar, está mais completa, 
informando outros detalhes relacionados ao seu caso, que podem ser muito 
importantes.

Ribeiro, Reginaldo
Administrador de Bancos de Dados
Oracle Certified Associate 10g
_________________________________
DBcom IT Experts
skype: rflribeiro
msn: [EMAIL PROTECTED]
mobile: 551192344290
fone: 551162165375
e-mail: [EMAIL PROTECTED]
site: http://www.dbcom.com.br



André Alves wrote:
>
> Olá Reginaldo, Obrigado pela ajuda
> A principio a coleta de estatísticas está sendo feita pelo banco de 
> forma automática. Isso é o mais correto??
>  
> Quanto aos parametros segue os valores para cada um:
> optimizer_index_caching = 0
> optimizer_index_cost_adj = 100
> db_file_multiblock_read_count = 16
>  
> Obrigado, Abs, André
>  
>
> --- Em qui, 12/6/08, Reginaldo Ribeiro <[EMAIL PROTECTED] 
> <mailto:rflribeiro%40dbcom.com.br>&gt; escreveu:
>
> De: Reginaldo Ribeiro &lt;[EMAIL PROTECTED] 
> <mailto:rflribeiro%40dbcom.com.br>&gt;
> Assunto: Re: RES: [oracle_br] Ajuda com uso de indices num select 
> banco 10g
> Para: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
> Data: Quinta-feira, 12 de Junho de 2008, 18:50
>
> Como disse o colega...
> Como está a coleta de estatísticas e os parâmetros
> optimizer_index_ caching, optimizer_index_ cost_adj,
> db_file_multiblock_ read_count? Está tudo default do banco? O seu I/O
> "guënta" o tranco?
>
> Ribeiro, Reginaldo
> Administrador de Bancos de Dados
> Oracle Certified Associate 10g
> ____________ _________ _________ ___
> DBcom IT Experts
> skype: rflribeiro
> msn: [EMAIL PROTECTED] com.br
> mobile: 551192344290
> fone: 551162165375
> e-mail: [EMAIL PROTECTED] com.br
> site: http://www.dbcom. com.br
>
> wilson teixeira wrote:
> &gt;
> &gt; Andre, boa noite!!!
> &gt;
> &gt; Existem alguns fatores os quais podem influenciar Oracle a tomar uma
> &gt; decisão
> &gt; ruim, histogramas ou falta deles, estastisticas, algum 
> parâmetros, etc...
> &gt;
> &gt; Durante o processo de analise desempenho de uma query, devemos 
> levar estes
> &gt; pontos em consideração.. .
> &gt;
> &gt; _____
> &gt;
> &gt; De: [EMAIL PROTECTED] os.com.br
> &gt; &lt;mailto:oracle_ br%40yahoogrupos .com.br&gt;
> &gt; [mailto:[EMAIL PROTECTED] os.com.br
> &gt; &lt;mailto:oracle_ br%40yahoogrupos .com.br&gt;] Em
> &gt; nome de André Alves
> &gt; Enviada em: quinta-feira, 12 de junho de 2008 15:30
> &gt; Para: Grupo Oracle 1; Grupo Oracle 2
> &gt; Assunto: [oracle_br] Ajuda com uso de indices num select banco 10g
> &gt;
> &gt; Olá pessoal, alguém pode me ajudar a entender uma coisa?? Fiz o 
> seguinte
> &gt; select num banco 10g
> &gt; select count(1) from tb_cdr_detraf a, tb_cdr b where
> &gt; a.id_cdr = b.id and b.data_ini between '19-may-08' and '20-may-08'
> &gt;
> &gt; SELECT STATEMENT, GOAL = ALL_ROWS Cost=593867 Cardinality= 1 Bytes=19
> &gt; SORT AGGREGATE Cardinality= 1 Bytes=19
> &gt; FILTER
> &gt; HASH JOIN Cost=593867 Cardinality= 813000 Bytes=15447000
> &gt; INDEX FAST FULL SCAN Object owner=DBTRANS Object name=TB_CDR_ 
> DETRAF_IND01
> &gt; Cost=390 Cardinality= 813000 Bytes=4878000
> &gt; PARTITION RANGE ITERATOR Cost=591156 Cardinality= 1650846 
> Bytes=21460998
> &gt; TABLE ACCESS FULL Object owner=DBTRANS Object name=TB_CDR Cost=591156
> &gt; Cardinality= 1650846 Bytes=21460998
> &gt;
> &gt; O plano de execução fez um acesso FULL na tabela TB_CDR. Depois 
> rodei o
> &gt; seguinte:
> &gt;
> &gt; select /*+index (b IDX_CDR_UNIQUE) (a TB_CDR_DETRAF_ IND01) */
> &gt; count(1) from tb_cdr_detraf a, tb_cdr b where
> &gt; a.id_cdr = b.id and b.data_ini between '19-may-08' and '20-may-08'
> &gt;
> &gt; SELECT STATEMENT, GOAL = ALL_ROWS Cost=1825205 Cardinality= 1 
> Bytes=19
> &gt; SORT AGGREGATE Cardinality= 1 Bytes=19
> &gt; FILTER
> &gt; HASH JOIN Cost=1825205 Cardinality= 813000 Bytes=15447000
> &gt; INDEX FAST FULL SCAN Object owner=DBTRANS Object name=TB_CDR_ 
> DETRAF_IND01
> &gt; Cost=390 Cardinality= 813000 Bytes=4878000
> &gt; TABLE ACCESS BY GLOBAL INDEX ROWID Object owner=DBTRANS Object 
> name=TB_CDR
> &gt; Cost=1822494 Cardinality= 1650846 Bytes=21460998
> &gt; INDEX RANGE SCAN Object owner=DBTRANS Object name=IDX_CDR_ UNIQUE
> &gt; Cost=10870
> &gt; Cardinality= 1650846
> &gt; Fiz o que eu na teoria pensando em regra acho certo, ele usou os 
> devidos
> &gt; indices.
> &gt;
> &gt; A 1º query rodou em 500 segundos. A 2º em 87. Ai vem a questão: 
> se o 1º
> &gt; plano o Oracle decidiu pelo uso das estatisticas que o acesso 
> FULL nas
> &gt; duas
> &gt; tabelas era melhor. Pq não foi ? É isso mesmo ?
> &gt;
> &gt; Obrigado a todos,
> &gt; André
>

Responder a