Olá Thiago, Seguem as informações:

1-) Qual a versão do banco?
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit 

2-) Como vc esta coletando estatísticas  para essa tabela??? ANALYZE ou

DBMS_STATS ???
Com DBMS_STATS, para todos os usuários através do comando
select 'execute dbms_stats.gather_schema_stats ('''||username||''');'  from dba_

users;


3-) Está coletando para os índices também?
Não sei, mas como estou coletando por usuário então acho que deveria ir no bolo 
tb. Mas qual o comando para fazer só com os indices??



4-) Está gerando histogramas para as colunas utilizadas nas restrições?
Não. Como faço isso


Obrigado mais uma vez, abs, André
--- Em sex, 20/6/08, Thiago Azevedo <[EMAIL PROTECTED]> escreveu:
De: Thiago Azevedo <[EMAIL PROTECTED]>
Assunto: Re: [oracle_br] Re: [usuarios_oracle] Ajuda novamente com uso de 
indices num select banco 10g
Para: oracle_br@yahoogrupos.com.br
Data: Sexta-feira, 20 de Junho de 2008, 10:45










    
            Mande as seguintes informações:



1-) Qual a versão do banco?

2-) Como vc esta coletando estatísticas  para essa tabela??? ANALYZE ou

DBMS_STATS ???

3-) Está coletando para os índices também?

4-) Está gerando histogramas para as colunas utilizadas nas restrições?



Abçs



2008/6/20 André Alves <[EMAIL PROTECTED] com.br>:



>

> Olá Amigos, continuo com o problema de execução forçando o indice e sem o

> indice. Alguém poderia me dar mais uma ajuda??

>

> Fiz o seguinte:

>

> Rodei a query abaixo, 4 vezes seguidas, o tempo dela foi na sequencia:

> 05:23, 05:08, 05:38 e 05:40.

>

> select count(1) from tb_cdr_detraf a, tb_cdr b where a.id_cdr = b.id and

> b.data_ini between '20-may-08' and '21-may-08'

>

> Rodei a query abaixo, 4 vezes seguidas, o tempo dela foi na sequencia:

> 02:10, 00:12, 00:13 e 00:13.

>

> select /*+index (b IDX_CDR_UNIQUE) (a TB_CDR_DETRAF_ IND01) */

> count(1) from tb_cdr_detraf a, tb_cdr b where a.id_cdr = b.id and

> b.data_ini between '20-may-08' and '21-may-08'

>

> Minha dúvida: Como o banco está no modo Custo, rodando estatistica,

> teoricamente eu não devo mais utilizar "hint" no select certo ? O banco

> deveria escolher qual jeito mais rápido de executar a query. É isso mesmo ?

> Se for isso mesmo, nesse caso acredito que o banco não está escolhendo

> corretamente como rodar a 1º query, pq a 2º ficou bem mais rápida, ainda

> mais após a 1º execução.

>

> Qualquer ajuda é bem vinda.

> Obrigado, André

>

> --- Em dom, 15/6/08, Maraisa Aparecida Decker <maraisadecker@ 
> gmail.com<maraisadecker% 40gmail.com> >

> escreveu:

> De: Maraisa Aparecida Decker <maraisadecker@ gmail.com<maraisadecker% 
> 40gmail.com>

> >

> Assunto: Re: [usuarios_oracle] Ajuda com uso de indices num select banco

> 10g

> Para: usuarios_oracle@ yahoogrupos. com.br<usuarios_oracle% 40yahoogrupos. 
> com.br>

> Cc: "Grupo Oracle 1" <[EMAIL PROTECTED] os.com.br<oracle_br%40yahoog 
> rupos.com. br>

> >

> Data: Domingo, 15 de Junho de 2008, 16:37

>

> Bom dia,

>

> pode ocorrer de as estatísticas do oracle não estarem atualizadas, e o

>

> otimizador do oracle acaba por não escolher o melhor plano de execução.

>

> Executa um analyze table para atualizar as statistics.

>

> 2008/6/12 André Alves <[EMAIL PROTECTED] com.br>:

>

> > Olá pessoal, alguém pode me ajudar a entender uma coisa?? Fiz o seguinte

>

> > select num banco 10g

>

> > select count(1) from tb_cdr_detraf a, tb_cdr b where

>

> > a.id_cdr = b.id and b.data_ini between '19-may-08' and '20-may-08'

>

> >

>

> > SELECT STATEMENT, GOAL = ALL_ROWS Cost=593867 Cardinality= 1 Bytes=19

>

> > SORT AGGREGATE Cardinality= 1 Bytes=19

>

> > FILTER

>

> > HASH JOIN Cost=593867 Cardinality= 813000 Bytes=15447000

>

> > INDEX FAST FULL SCAN Object owner=DBTRANS Object name=TB_CDR_

> DETRAF_IND01

>

> > Cost=390 Cardinality= 813000 Bytes=4878000

>

> > PARTITION RANGE ITERATOR Cost=591156 Cardinality= 1650846 Bytes=21460998

>

> > TABLE ACCESS FULL Object owner=DBTRANS Object name=TB_CDR Cost=591156

>

> > Cardinality= 1650846 Bytes=21460998

>

> >

>

> > O plano de execução fez um acesso FULL na tabela TB_CDR. Depois rodei o

>

> > seguinte:

>

> >

>

> > select /*+index (b IDX_CDR_UNIQUE) (a TB_CDR_DETRAF_ IND01) */

>

> > count(1) from tb_cdr_detraf a, tb_cdr b where

>

> > a.id_cdr = b.id and b.data_ini between '19-may-08' and '20-may-08'

>

> >

>

> > SELECT STATEMENT, GOAL = ALL_ROWS Cost=1825205 Cardinality= 1 Bytes=19

>

> > SORT AGGREGATE Cardinality= 1 Bytes=19

>

> > FILTER

>

> > HASH JOIN Cost=1825205 Cardinality= 813000 Bytes=15447000

>

> > INDEX FAST FULL SCAN Object owner=DBTRANS Object name=TB_CDR_

> DETRAF_IND01

>

> > Cost=390 Cardinality= 813000 Bytes=4878000

>

> > TABLE ACCESS BY GLOBAL INDEX ROWID Object owner=DBTRANS Object

> name=TB_CDR

>

> > Cost=1822494 Cardinality= 1650846 Bytes=21460998

>

> > INDEX RANGE SCAN Object owner=DBTRANS Object name=IDX_CDR_ UNIQUE

> Cost=10870

>

> > Cardinality= 1650846

>

> > Fiz o que eu na teoria pensando em regra acho certo, ele usou os devidos

>

> > indices.

>

> >

>

> > A 1º query rodou em 500 segundos. A 2º em 87. Ai vem a questão: se o 1º

>

> > plano o Oracle decidiu pelo uso das estatisticas que o acesso FULL nas

> duas

>

> > tabelas era melhor. Pq não foi ? É isso mesmo ?

>

> >

>

> > Obrigado a todos,

>

> > André

>

> >

>

> > ------------ --------- --------- ---

>

> > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para

>

> > armazenamento!

>

> >

>

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

>

> >

>

> >

>

> >

>

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

>

>

>

>

>

>

>

>

>

>

>

> Abra sua conta no Yahoo! Mail, o único sem limite de espaço para

> armazenamento!

> http://br.mail. yahoo.com/

>

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

>

>  

>



-- 

Thiago Azevedo

Accenture Brazil

Services - AO Carrefour

Work: 55 11 51888492

Mobile: 55 13 81453524

email: thiago.azevedo@ accenture. com

MSN IM: [EMAIL PROTECTED] com



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




      

    
    
        
         
        
        








        


        
        


      Abra sua conta no Yahoo! Mail, o único sem limite de espaço para 
armazenamento!
http://br.mail.yahoo.com/

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

Responder a