O que é indexar, reindexar e por que é importante?
Imagine uma biblioteca, onde existam vários livros e muitos estudantes
utilizam essa biblioteca diariamente, pegando livros das estantes para ler.
Para facilitar o estudante encontrar o livro, os livros estão
organizados em estantes que são separadas por áreas, como humanas, exatas e
assim por diante.
Isso se compara a um índice no Banco de Dados, onde a biblioteca é o
banco(tabela) e os livros são os registros, e o fato de estarem
organizados(indexados) facilita na hora de encontrar um registro.
Porém, os estudantes quando pegam um livro não podem devolver novamente
no mesmo lugar, pois poderiam cometer algum erro e estragar a ordem dos livros,
então deixam-no sobre uma mesa para que a pessoa responsável organize quando
puder, para que esses livros não fiquem indisponíveis quando outro estudante
precisar deles, a pessoa responsável mantém uma lista com todos os livros que
estão sobre a mesa, para que caso o estudando não localize o livro, ela veja se
o mesmo não está sobre a mesa.
Da mesma forma, ela mantém uma lista para livros novos que chegaram e
ainda não foram organizados nas estantes e para livros que foram retirados do
acervo. E assim que possível, ela reorganiza os livros para que fiquem na ordem
novamente deixando mais rápida a busca.
Contudo, este trabalho não pode ser feito o tempo todo, pois os
estudantes teriam que ficar esperando que ele se completasse para que então
pudessem pegar os livros que estão procurando.
O fato de reindexar uma tabela se compara ao ato de recolocar os livros
nas estantes novamente e eliminar as listas paralelas, ou seja, quando
inserimos, atualizamos ou deletamos um registro, o índice fica desfalcado
desses registros, é como se eles estivessem em uma lista separada, porém a
reindexação não pode ser feita o tempo todo e automaticamente, pois
necessitária que quem estivesse tentando acessar a tabela em questão precisasse
esperar o termino da reindexação.
por isso é importante de tempos em tempos que façamos a reindexação das
tabelas do nosso banco de dados, assim deixaremos o acesso aos dados mais
rápido.
bom, para reindexar uma tabela no SQL SERVER, precisamos executar o
seguinte comando:
DBCC DBREINDEX ('NOME_DA_TABELA', '', 80)
|
Onde o primeiro parâmetro se refere ao nome da tabela, o segundo ao nome
do índice(opcional) e o terceiro é o percentual de cada index em relação ao
armazenamento dos dados.
Para reindexar um banco inteiro, basta utilizar a sotored procedure
SP_MSFOREACHTABLE que é responsável por percorrer todas as tabelas do banco e
executar um comando designado.
EXEC SP_MSFOREACHTABLE @command1= "DBCC DBREINDEX
('?', '', 80)"
|
Pronto, todas as tabelas do seu banco estarão reindexadas e
provavelmente haverá melhora na performance do mesmo.
Obs: Se possível realize está operação quando não houver usuários
utilizando o banco. pois bloqueia o acesso a tabela até que o índice seja
refeito.