Seguinte, dá uma olhada no exemplinho que acabei de mandar pra outra 
pergunta, que tá completinho (eu o fiz em 9i, mas funcionaria 
perfeitamente no 8i versão 8.1.7.x, é onde eu o usava no começo do 
ano passado, antes de migrar o meu sistema pra 9i) - e lógico, lá no 
exemplinho o outro colega queria usar FBI em otimização de ROLE, 
então eu (urgh!!) meti hints no SELECT, vc em tendo um sistema 
civilizado, escrito em CBO (deve ser, já que vc está desenvolvendo 
agora) logicamente não precisa dessa coisarada...

 O conceito que vc tinha está não errado, mas incompleto : é assim, 
em todo e qualquer índice b*tree (seja FBI, seja índice 
b*tree "comum"), realmente ** NÂO É ** todos os registros que entram 
no índice, e sim APENAS os registros onde a chave não é nula, chaves 
nulas nunca, nunca entram no índice b*tree), o truque que estou 
usando portanto depende desse conceito, SE uma função retornar um 
nulo e a função é o que está sendo indexado, nulls não entram no 
índice, o índice ficou portanto só com os regs q me interessam.
 
 []s
 
  Chiappa
--- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro <[EMAIL PROTECTED]> 
escreveu
>
> Além disso, só mais uma coisa, você mencionou em criar um FBI para 
apenas os
> que tem o valor preenchido...
> 
> mas como ?
> 
> seria um:
> 
> create index X on TABELA ( ? )
> 
> mas que função ? como ele restringiria ?....
> 
> pois sempre pensei que no indice FBI eu teria todos os valoles... 
iguais aos
> outros indices ... mas eles teriam em epscial o tratamento dado 
pela funcao,
> por exemplo ,se eu quisesse um indice com data truncadas, ele 
guardaria o
> row id e data truncada.....de "Todos" os valores...
> mas pelo que você disse é possivel deixar o FBI somente com os 
registros
> necessários ao meu objetivo .... como ?
> 
> On 1/5/06, Marcelo Cauduro <[EMAIL PROTECTED]> wrote:
> >
> > Muito Obrigado Chiappa,ótima alteranativa, .....
> >
> > mas supondo que meu Oracle seja 8i... teria outra alternativa a 
FBI ?
> >
> > On 1/5/06, jlchiappa <[EMAIL PROTECTED] > wrote:
> > >
> > >  *** NENHUMA *** das duas opções, eu iria pra terceira, que é 
FBI
> > > (Function-Based Index), tipo : teria o campo de flag como 
nullable,
> > > escreveria uma função que me retornasse somente os 
(presumivelmente
> > > poucos) caras que tem o campo preenchido, e faria um FBI com 
essa
> > > função, aí só entrariam no índice os poucos registros com o flag
> > > preenchido. Assim, se a tabela tem (digamos) 1 milhão d 
eregistros, e
> > > num dado momento só há (digamos) mil registros com o campo de 
flag
> > > preenchido, vc só teria mil registros no índice fbi, ficando 
portanto
> > > ** muito ** menor que índice comum, e (o que é melhor) além de
> > > pequeno só os caras que são realmente necessários estariam lá. 
Eu uso
> > > bastante essa lógica aqui no cliente, obtive resultados 
EXCELENTES
> > > com ela, coisa de fazer processo de 8 horas cair pra duas...
> > >
> > > []s
> > >
> > > Chiappa
> > > --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro 
<[EMAIL PROTECTED]>
> > > escreveu
> > > >
> > > > Pessoal,
> > > >
> > > > Tenho uma tabela que recebe varias inserções e updates por 
dia.
> > > > Ela é uma tabela de referência para se saber o que já foi
> > > processado em um
> > > > determinado arquivo
> > > >
> > > > Ela entre outras, possui duas colunas, uma de "Data de 
Processo 1"
> > > e outra
> > > > "Data de Processo 2", ambas do tipo Date.
> > > > Gravam-se nelas as datas em que cada um dos processo rodou. O
> > > processo 1 na
> > > > tabela "Data de Processo 1" e o processo 2 na "Data de 
Processo 2".
> > > > O primeiro processo a rodar é o 1, afinal, o 2 roda se, e 
somente
> > > se, o 1 ja
> > > > rodou.
> > > >
> > > > Sendo assim , para identificar se já posso rodar o processo 2
> > > (somente se o
> > > > 1 ja rodou ) , o que seria melhor:
> > > >
> > > > -Criar um b-tree index na coluna "data de processo 1" e 
selecionar
> > > tudo que
> > > > for nulo. Entretanto, Não acho essa uma boa alternativa 
porque ,
> > > pelo que
> > > > sei, o  indice b-tree não roda com valores nullos, certo ?
> > > > Então pensei em fazer a mesma coisa mas usando um indice 
bitmap,
> > > mas pelo
> > > > que li, parece que o indice bitmap não deve ser usado em 
tabelas
> > > com muitos
> > > > update....
> > > >
> > > > Outra opção:
> > > > -Criar coluna Estado que teria dois estados,
> > > > 1 para processo1 realizado e 2 para processo1 e 2 realizado,
> > > > Dai criaria um b-tree indice para ela e selecionaria tudo que
> > > estiver com
> > > > valor 1....
> > > > Se esse caso for bom, seria melhor nessa coluna um b-tree ou 
um
> > > bitmap, e
> > > > por que ?
> > > >
> > > > Muito Obrigado Pessoal.
> > > >
> > > >
> > > > [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/
> > >
> > > ----------------------------------------------------------------
----------------------------------------------------------
_____________________________________________________________________
> > > Area de download do grupo - 
http://www.4shared.com/dir/101727/a4dcc423
> > >
> > >
> > >  *Yahoo! Grupos, um serviço oferecido por:*  PUBLICIDADE
> > >
> > > 
<http://br.rd.yahoo.com/SIG=12fhsm0ri/M=387526.7663462.8550203.1588051
/D=brclubs/S=2137114689:HM/Y=BR/EXP=1136481349/A=3215516/R=2/SIG=16e56
adpd/*http://landingstrip.dell.com/landingstrip/ls.asp?
CID=10029&LID=288321&DGC=BA&DGStor=DHS&DGSite=Yahoo&Conum=BR&DURL=http
://www1.la.dell.com/content/products/category.aspx/desktops?c%3Dbr%
26l%3Dpt%26s%3Ddhs>
> > > ------------------------------
> > > *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]
> > >    <[EMAIL PROTECTED]
subject=Unsubscribe>
> > >
> > >    - O uso que você faz do Yahoo! Grupos está sujeito aos 
Termos do
> > >    Serviço do Yahoo! <http://br.yahoo.com/info/utos.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/ 
--------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
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