Os procedimentos a seguir são apenas sugestões, antes de qualquer alteração em sua base de dados sugerimos que solicite a análise e aprovação de seu DBA/Desenvolvedor.
O Mecanismo de banco de dados do SQL Server mantém os índices automaticamente sempre que são realizadas operações de entrada, atualização ou exclusão nos dados subjacentes. No decorrer do tempo, essas modificações podem fazer com que as informações do índice sejam dispersadas pelo banco de dados (fragmentadas). A fragmentação ocorre quando os índices têm páginas nas quais a ordem lógica, com base no valor de chave, não corresponde à ordem física do arquivo de dados. Índices com fragmentação pesada degradam o desempenho da consulta e causam lentidão de resposta do aplicativo, podendo gerar até erros em alguns casos. Para obter mais informações, consulte o site da Microsoft.
Você pode solucionar a fragmentação de índice reorganizando ou recriando um índice.
O procedimento a seguir mostra como verificar e desfragmentar índices em uma base MS SQL Server 2008 ou MS SQL Server 2005.
Verificando a fragmentação
Para verificar a fragmentação dos índices rode o seguinte comando SQL (basta definir o nome da base na primeira linha):
USE NomedaBase GO SELECT a.index_id, name, avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats (DB_ID(DB_NAME()), OBJECT_ID(N'dbo.OCR'), NULL, NULL, NULL) AS a JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id WHERE name <> '' ORDER BY avg_fragmentation_in_percent DESC;
Desfragmentando os índices
Verificando os resultado da query anterior podemos verificar os índices que precisam ser recriados, os índices com o campo ‘avg_fragmentation_in_percent’ maior do que 30% devem ser recriados
Para recriar um índice pelo modo visual do SQL Server Management Studio basta expandir os objetos da base de dados, expandir ‘Tables’, em seguida a tabela desejada, depois ‘Indexes’ e por último clicar com o botão direito do mouse sobre o índice desejado e clicar em ‘Rebuild’ (recompilar). Para índices com fragmentação abaixo de 30% você pode utilizar a opção ‘Reorganize’:
Em seguida podemos verificar o total de fragmentação do índice e basta clicar em ‘OK’ para recriá-lo
Para executar Rebuild em todos os índices da tabela basta seguir os passos acima, porém clique com o botão direito em Indexes e em seguida em ‘Rebuild All’.
Recriar os índices de uma tabela via comando SQL (Basta definir o nome da tabela na primeira linha):
ALTER INDEX ALL ON NomedaTabela REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON, STATISTICS_NORECOMPUTE = ON); GO
Recriar todos os índices do banco de dados (Definir o nome da base de dados na primeira linha)
Para recriar todos os índices da base de dados pode ser utilizado o seguinte comando SQL (Recomendamos que não seja executado em horário com muitos acessos a base de dados pois os índices ficarão indisponíveis durante o processo):
use NomedaBase GO DECLARE @TableName VARCHAR(255) DECLARE @sql NVARCHAR(500) DECLARE @fillfactor INT SET @fillfactor = 80 DECLARE TableCursor CURSOR FOR SELECT OBJECT_SCHEMA_NAME([object_id])+'.'+name AS TableName FROM sys.tables OPEN TableCursor FETCH NEXT FROM TableCursor INTO @TableName WHILE @@FETCH_STATUS = 0 BEGIN SET @sql = 'ALTER INDEX ALL ON ' + @TableName +' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@fillfactor) + ')' EXEC (@sql) FETCH NEXT FROM TableCursor INTO @TableName END CLOSE TableCursor DEALLOCATE TableCursor GO
Veja também
Primeiramente execute o código a seguir para adicionar o grupo de arquivos e um arquivo em seu banco de dados para uso da indexação full text ;
alter database [suabase] add filegroup [suabase_fulltext] go
Agora Execute o código a seguir para criar o Catálogo Full Text de sua base de dados ;
create fulltext catalog [catalogo] on filegroup [suabase_fulltext1] go
Para Verificar se o catálogo foi criado, espanda o nó Storage, Full Text Catalogs sob seu banco de dados .
Para Criar o Índice dê um duplo clique no catálogo, e posteriormente na opção de Tables/Views .
Nesta tela basta verificar qual dos seus objetos deseja criar o índice fulltext e assimilar o mesmo no catálogo. Você terá visível a constraint criada e os campos da tabela selecionada.
Basta marcar qual campo deseja criar o índice e caso necessário selecionar a linguagem de busca, selecionar o tipo de alteração do índice e clicar em OK para finalizar.
Veja também
- Dados de acesso ao MS SQL Server
- Database mail do SQL Server
- Backup da Base MSSQL com Database Publishing Wizard