[firebase-br] Como reconstruir todos os indices ?

Marcio Grazianni tec em brasilsoftware.com
Sex Out 21 09:37:38 -03 2005


Olá Jorge, tem um jeito mais prático de refazer os indices.
Fiz umas stored procedures que recalculam/recriam os indices. Seguem as 
danadas:
Utilize-as da seguinte forma: (O resultado só acontece quando commita)
Ficou beleza porque agora pela minha aplicação eu recalculo ou refaço 
meus indices a hora que quiser. (Fora do expediente é claro ;-))
Ei, Cantú, se o pessoal gostar dá pra colocar no site Firebase???

//---[ Forma de utilizar ]---*
SELECT nome FROM sp_indices1 (lembrar de commitar)

SELECT nome FROM sp_indices2 (lembrar de commitar)

//---[ Stored procedures ]---*
CREATE OR ALTER PROCEDURE SP_INDICES1
RETURNS (
    NOME VARCHAR(31))
AS
BEGIN
  FOR
    SELECT ind.rdb$index_name FROM rdb$indices ind WHERE 
ind.rdb$system_flag IS NULL ORDER BY ind.rdb$index_name
    INTO
      :nome
  DO
  BEGIN
    EXECUTE STATEMENT 'SET STATISTICS INDEX ' || nome || ';';
    SUSPEND;
  END
END@

CREATE OR ALTER PROCEDURE SP_INDICES2
RETURNS (
    NOME VARCHAR(31))
AS
BEGIN
  FOR
    SELECT ind.rdb$index_name FROM rdb$indices ind WHERE 
ind.rdb$system_flag IS NULL ORDER BY ind.rdb$index_name
    INTO
      :nome
  DO
  BEGIN
    EXECUTE STATEMENT 'ALTER INDEX ' || nome || ' ACTIVE' || ';';
    SUSPEND;
  END
END@

Marcio Grazianni
tec em brasilsoftware.com
Brasil Software Soluções Empresariais Ltda.



RedDevil escreveu:

> ola Jorge,
>
>
> Post By Jorge Oliveira Silva [Proexperts]:
>
>> pessoal,
>>
>> uso o IbExpert
>> alguem sabe me explicar como recontruo todo os indices em um banco ?
>>
>
> para voce reconstruir um indice, primeiro voce usa o IBExpert ou o 
> IBOConsole para desativar ele, da seguinte maneira:
>
> alter table <nome-do-índice> inactive
>
>
> e depois voce ativa ele (sendo que quando o indice sera reativado ele 
> sera recriado), da segunte manieira:
>
> alter table <nome-do-índice> active
>
>
> para o caso de voce possuir muitos indices no teu BD, voce pode evitar 
> o porre que seria ficar ativando e desativando os indices um por um 
> simplesmente fazendo um backup do teu banco e em seguida um restore, 
> que nesse processo de backup/restore todos os indices existentes no 
> teu BD serao recriados, reconstruidos a partir do zero quando voce 
> fizer o restore...
>
>
> []s
> força sempre!!!
> ate +++
>





Mais detalhes sobre a lista de discussão lista