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

 


Responder a