Amigo, qual o tamanho de sua tamanho de seu tabela?

Dependendo do tamanho da tabela o oracle faz um FULL do que o acesso ao
indice! Como está a estatistica desta tabela, do indice?

Att,

Welvis Douglas da Silva Moretto
DBA - Oracle
Fone:  (41) 9997-6297  
E-mail:    welvis_doug...@hotmail.com, wel...@stcruz.com.br
Messenger: welvis_doug...@hotmail.com
 
Mestre em Engenharia de Produção e Sistemas - PUC/PR;
Especializando em Banco de Dados - UNOPAR;
Especialista Engenharia de Software - UNOPAR;
Tecnólogo em Processamento de Dados - FACCAR.


-----Mensagem original-----
De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em
nome de Eduardo
Enviada em: quinta-feira, 15 de abril de 2010 14:41
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Oracle Hint

Marcelo e Mauro,

Obrigado pela dica. Mas mesmo mudando o hint para especificado o oracle
continua fazendo full table scan.



set autotrace traceonly explain;

SELECT   /* +INDEX  (admgeral.arquivo_divulgacao IX_FK_ARQ_DIV_SIT_ARQ)*/
ad.sg_ue, ad.cd_arquivo
                        FROM     arquivo_divulgacao ad
                      WHERE     ad.cd_situacao_arquivo = 3;
Execution Plan
----------------------------------------------------------
           SELECT STATEMENT Optimizer Mode=ALL_ROWS (Cost=11 Card=4 K
Bytes=91 K)
   1         PARTITION LIST SINGLE (Cost=11 Card=4 K Bytes=91 K)
   2    1      TABLE ACCESS FULL ADMGERAL.ARQUIVO_DIVULGACAO (Cost=11 Card=4
K Bytes=91 K)


2010/4/15 Marcelo Cauduro <mcaud...@gmail.com>

>
>
> Complementando o que o amigo Raul disse, a sua sintaxe esta errada, ou 
> seja, o Oracle desconsidera esse HINT, para ele é apenas um 
> comentario... e sendo que você tem histogramas coletados, ele escolhe 
> o uso de indice de acordo com o caso, por isso a situação muda de 
> acordo com o valor do cd_situacao_arquivo... não tem nada a ver com o 
> hint, que no seu caso nao existe...
>
> para forcar o uso de indice sempre nessa querie, apenas mude a sua 
> sintaxe , naum existe o hint INDEX_RS, mas sim INDEX
>
> 2010/4/15 Raul Francisco Costa F. de Andrade, DBA 
> <raulf...@gmail.com<raulfdba%40gmail.com>
> >
>
>
> > Caro amigo
> > A tabela citada deve ter histogramas coletados provavelmente, sendo 
> > assim
> o
> > número 1 deve ter poucas vezes na tabela, já o número 3 deve ter mais.
> >
> > Sendo assim, através do histograma o otimizador acredita ser melhor 
> > (e provavelmente será) ler a tabela toda ao invés de utilizar o índice.
> > A sintaxe da sua hint está meio estranha também!
> >
> > tente fazer:
> >
> >
> > select /*+ index(owner.tabela index_name) */ from owner.tabela;
> >
> >
> >
> >
> >
> >
> >
> > Em 15 de abril de 2010 13:54, Eduardo 
> > <eduardo.pa...@gmail.com<eduardo.paula%40gmail.com>>
> escreveu:
> >
> > >
> > >
> > > Senhores,
> > >
> > > eu tenho um select que possui 2 custos mudando um parametro no where:
> > >
> > > Gostaria de saber porque ele está usando o index somente quando o 
> > > cd_situacao_arquivo é 1, já tentei usar o hint para ele usar o 
> > > indice mas ele teima em fazer full table scan.
> > > Tem solução isso?
> > >
> > >
> > >
> >
> ######################################################################
> #################################
> > >
> > > set autotrace traceonly explain;
> > >
> > > SELECT /* +INDEX_rs IX_FK_ARQ_DIV_SIT_ARQ */ ad.sg_ue, 
> > > ad.cd_arquivo FROM arquivo_divulgacao ad WHERE 
> > > ad.cd_situacao_arquivo = 3;
> > >
> > > ----------------------------------------------------------
> > > Execution Plan
> > > ----------------------------------------------------------
> > > SELECT STATEMENT Optimizer Mode=ALL_ROWS (Cost=11 Card=4 K
> > > Bytes=104 K)
> > > 1 PARTITION LIST SINGLE (Cost=11 Card=4 K Bytes=104 K)
> > > 2 1 TABLE ACCESS FULL ADMELEGERAL.ARQUIVO_DIVULGACAO
> > > (Cost=11 Card=4 K Bytes=104 K)
> > >
> > >
> > >
> >
> ######################################################################
> #################################
> > >
> > > set autotrace traceonly explain;
> > >
> > > SELECT /* +INDEX_rs IX_FK_ARQ_DIV_SIT_ARQ */ ad.sg_ue, 
> > > ad.cd_arquivo FROM arquivo_divulgacao ad WHERE 
> > > ad.cd_situacao_arquivo = 1;
> > >
> > > Execution Plan
> > > ----------------------------------------------------------
> > > SELECT STATEMENT Optimizer Mode=ALL_ROWS (Cost=2 Card=1 Bytes=22)
> > > 1 TABLE ACCESS BY GLOBAL INDEX ROWID 
> > > ADMELEGERAL.ARQUIVO_DIVULGACAO (Cost=2 Card=1 Bytes=22)
> > > 2 1 INDEX RANGE SCAN ADMELEGERAL.IX_FK_ARQ_DIV_SIT_ARQ
> > > (Cost=1 Card=1)
> > >
> > > --
> > > ----------
> > >
> > > Eduardo
> > >
> > >
> >
> >
> >
> > --
> > ----------------------------------------------------------
> > Raul Francisco da Costa Ferreira de Andrade DBA - OCA - Oracle 
> > Certified Associate COBIT Foundation 4.1
> > Fone: (41)8855-8874 Brt
> > email: raulf...@gmail.com <raulfdba%40gmail.com>
> > Skype: raul.andrade
> > www.clickdba.com
> > "Não somos seres humanos passando por uma experiência espiritual 
> > Somos seres espirituais passando por uma experiência humana."
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ------------------------------------
> >
> >
> > ----------------------------------------------------------
> > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> > inteira responsabilidade de seus remetentes.
> > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> >
> > ----------------------------------------------------------
> > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
> Procedure
> > » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO!
VISITE:
> > http://www.oraclebr.com.br/
> > ----------------------------------------------------------
> > Links do Yahoo! Grupos
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



--
----------


Eduardo


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



------------------------------------

----------------------------------------------------------------------------
----------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
----------------------------------------------------------------------------
----------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure
» Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
http://www.oraclebr.com.br/  
----------------------------------------------------------------------------
-------------------------------------------- Links do Yahoo! Grupos


Responder a