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
> >
>






--------------------------------------------------------------------------------------------------------------------------
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