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