[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