Como reconstruir um índice no Firebird

Devido ao uso e crescimento de um banco de dados e ate mesmo em falhas de configuração, é possivel que os Indices fiquem Fragmentados e com a estatistica desatualizada. Isto pode ocasionar que eles sejam preteridos pelo compilador na hora de gerar o plano de execução dos comandos o que pode degradar a performance ( pesquisa lenta por exemplo) . Uma das muitas formas de fazer tunning nos indices é refazendo sua estrutura ou as estatisticas .  Ao refazer sua Estrutura geralmente Desativamos os Indices e logo em seguida o Ativamos . Num processo semelhante ao que esta escrito abaixo:

ALTER INDEX MEU_INDICE INACTIVE;
COMMIT;
ALTER INDEX MEU_INDICE ACTIVE;
COMMIT;

O Incoveniente é que o procedimento descrito não funciona em índices associados a chaves primárias, estrageiras ou uniques, pois eles não podem ser desativados. Mas descobriu-se recentemente Devido a um “artefato de implementação”,  que o simples fato de rodar um ALTER INDEX MEU_INDICE ACTIVE, mesmo quando o MEU_INDICE já está ativo, faz com que o Firebird o reconstrua. Com a vantagem de funcionar mesmo com índices associados a regras de integridade.

ALTER INDEX MEU_INDICE ACTIVE;
COMMIT;   // ja é suficiente

Portanto uma grande descoberta ….

ps) Não é minha autoridade a assinatura do método mas de uma das maiores autoridades do Firebird no Brasil . Achei a dica muito interressante e subescrevi aqui no blog

http://www.firebase.com.br/fb/artigo.php?id=2272

tem que fazer um cadastro para a leitura…

Sobre marcosalles

Delphiano de Coração Desenvolvo FreeLancer e presto Consultoria Orientação Online DataSnap DbX ClientDataSet , POO , Padrões de Projeto e dúvidas de Delphi em Geral
Esse post foi publicado em Dicas e marcado , , . Guardar link permanente.

Deixe um comentário