Índices MS SQL

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.

Índices MS SQL

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’:

Índices MS SQL

Em seguida podemos verificar o total de fragmentação do índice e basta clicar em ‘OK’ para recriá-lo

Índices MS SQL

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


Índices MS SQL

Índices MS SQLPrimeiramente 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 

Índices MS SQL 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 

Índices MS SQL Para Verificar se o catálogo foi criado, espanda o nó Storage, Full Text Catalogs sob seu banco de dados .

Índices MS SQL

Índices MS SQL 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.

Índices MS SQL

Veja também