Voce tentou as dicas que eu passei? Rodar a query com a subquery, a criacao do indice e a coleta do histograma?
On 8/24/06, jorgedonato2001 <[EMAIL PROTECTED]> wrote: > > Valeu Chiappa, vou estudar e estar as suas sugestões. > > Obrigado, > Jorge Donato > > --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> escreveu > > > > > pesquisa com %nnn% o melhor que vc pode obter normalmente é um range > > scan mesmo, não tem muito jeito , e o range vai ser BEM largo, vc TEM > > que procurar praticamente no índice todo , já que o % inicial > > significa qquer coisa antes do argumento... Será que REALMENTE não dá > > pra especificar sem o % inicial ?? Se realmente tiver que, pra um > > caso desses ou vc usa o CONTAINS num índice text, ou tem um índice de > > função que indexa só os caras que contém a chave de pesquisa, como > > mostrado em http://asktom.oracle.com/pls/ask/f? > > p=4950:8:::::F4950_P8_DISPLAYID:37336026927381 . Uma outra opção, se > > a pesquisa tiver que ser repetida várias vezes na mesma sessão, pode > > ser ao invés de se ter o sub-conjunto menor dos regs que atendem à > > chave de pesquisa indexados num índice de função, talvez possa ser te- > > los numa GTT populada pelo programa, se o custo pra resolver > > BOP_RG.ID_RG = BOP_RG_FONEMA.ID_RG não for tão alto... > > > > []s > > > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br, "jorgedonato2001" <[EMAIL PROTECTED]> > > escreveu > > > > > > Tenho a seguinte situacão: > > > > > > SQL> VARIABLE b1 number; > > > SQL> VARIABLE b2 varchar2(85); > > > SQL> VARIABLE b3 number; > > > SQL> VARIABLE b4 number; > > > SQL> > > > SQL> EXECUTE :b1 := 9; > > > > > > PL/SQL procedure successfully completed. > > > > > > Elapsed: 00:00:00.01 > > > SQL> EXECUTE :b2 := 'MR'; > > > > > > PL/SQL procedure successfully completed. > > > > > > Elapsed: 00:00:00.00 > > > SQL> EXECUTE :b3 := 999; > > > > > > PL/SQL procedure successfully completed. > > > > > > Elapsed: 00:00:00.00 > > > SQL> EXECUTE :b4 := 1; > > > > > > PL/SQL procedure successfully completed. > > > > > > Elapsed: 00:00:00.01 > > > SQL> > > > SQL> SELECT BOP_RG_FONEMA.ID_RG, > > > 2 BOP_RG_FONEMA.FONEMA, > > > 3 BOP_RG.NM_NOME, > > > 4 BOP_RG.NM_MAE, > > > 5 BOP_RG.DT_NASCIMENTO > > > 6 FROM BOP_RG_FONEMA, > > > 7 BOP_RG > > > 8 WHERE BOP_RG_FONEMA.FONEMA LIKE '%'||:b2 ||'%' > > > 9 AND BOP_RG.ID_RG = BOP_RG_FONEMA.ID_RG; > > > > > > 577757 rows selected. > > > > > > Elapsed: 00:05:19.83 > > > > > > Execution Plan > > > ---------------------------------------------------------- > > > 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=12848 Card=112467 > > By > > > tes=22718334) > > > > > > 1 0 HASH JOIN (Cost=12848 Card=112467 Bytes=22718334) > > > 2 1 INDEX (RANGE SCAN) OF 'IDX2_BOP_RG_FONEMA' (NON- > > UNIQUE) > > > (Cost=88 Card=112467 Bytes=2024406) > > > > > > 3 1 INDEX (FAST FULL SCAN) OF 'IDX5_BOP_RG' (NON-UNIQUE) > > (Co > > > st=6010 Card=2249333 Bytes=413877272) > > > > > > > > > > > > > > > > > > Statistics > > > ---------------------------------------------------------- > > > 0 recursive calls > > > 0 db block gets > > > 72271 consistent gets > > > 98716 physical reads > > > 0 redo size > > > 118090042 bytes sent via SQL*Net to client > > > 269853 bytes received via SQL*Net from client > > > 38519 SQL*Net roundtrips to/from client > > > 0 sorts (memory) > > > 0 sorts (disk) > > > 577757 rows processed > > > > > > > > > Tenho os seguintes índices > > > > > > CREATE INDEX EBOP.IDX5_BOP_RG ON EBOP.BOP_RG > > > (NM_NOME, ID_RG, NM_MAE, DT_NASCIMENTO) > > > Distinct Keys:2249329 > > > > > > CREATE INDEX EBOP.IDX2_BOP_RG_FONEMA ON EBOP.BOP_RG_FONEMA > > > (FONEMA, ID_RG) > > > Distinct Keys:2249330 > > > > > > Tabela BOP_RG: > > > 2249333 Linhas > > > > > > Tabela BOP_RG_FONEMA: > > > 2249330 Linhas > > > > > > > > > O tempo esta muito alto, alguma ídeia para melhorar essa query????? > > > > > > Att, > > > Jorge Donato > > > > > > > > > > > -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html