Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Um índice ajuda o SQL Server a recuperar dados de linhas rapidamente. Os índices funcionam como o sumário no início dos livros, permitindo que você procure rapidamente a página em que um tópico está. Sem índices, o SQL Server precisa verificar todas as linhas de uma tabela para localizar um registro.

Existem dois tipos de índices no SQL Server: clusterizados e não clusterizados. Descubra a diferença entre índices clusterizados e não clusterizados e por que eles são importantes.

Índice agrupado no SQL Server

Em um índice clusterizado, as linhas de dados são armazenadas fisicamente de maneira ordenada com base no valor da chave. Como o índice inclui a tabela e só pode organizar as linhas em uma ordem, você pode criar apenas um índice clusterizado por tabela.

Enquanto os índices tornam a recuperação de linhas em um intervalo mais rápida,

Instruções INSERT e UPDATE pode ser lento porque o otimizador de consulta verifica o índice na ordem até encontrar o índice de destino.

Índice não clusterizado no SQL Server

Um índice não agrupado contém os valores-chave cuja entrada é um ponteiro chamado localizador de linha. Para tabelas clusterizadas (tabelas com um índice clusterizado), o ponteiro aponta para uma chave no índice clusterizado que, por sua vez, aponta para a linha na tabela. Para linhas sem um índice clusterizado, o ponteiro aponta diretamente para a linha da tabela.

Como criar um índice clusterizado no SQL Server

Quando você cria uma tabela com uma chave primária, o SQL Server cria automaticamente uma chave de índice clusterizado com base nessa chave primária. Se você não tiver uma chave primária, poderá executar a seguinte instrução para criar uma chave de índice clusterizado.

CRIAR AGRUPADO ÍNDICE <índicenome>
NA MESA <Nome da tabela>(nome da coluna)

Nesta instrução, você está especificando o nome do índice, o nome da tabela para criá-lo e o nome da coluna para usar no índice.

Se você adicionar uma chave primária a uma tabela que já possui um índice clusterizado, o SQL Server criará um índice não clusterizado com ela.

Para criar um índice clusterizado que não inclua a coluna de chave primária, você deve primeiro descartar a restrição de chave primária.

USARnome do banco de dados
ALTERARMESA Nome da tabela
DERRUBARLIMITAÇÃO pk_name
IR

A remoção das restrições de chave primária também remove o índice clusterizado, permitindo que você crie um personalizado.

Como criar um índice não clusterizado no SQL Server

Para criar um índice não clusterizado, use a instrução a seguir.

CRIARÍNDICE <índicenome>
NA MESA <Nome da tabela>(nome da coluna)

Você também pode usar a palavra-chave NONCLUSTERED assim:

CRIAR [NÃO CONCLUÍDO] ÍNDICE <índicenome>
NA MESA <Nome da tabela>(nome da coluna)

Esta instrução cria um índice não clusterizado na tabela que você especifica e inclui a coluna que você indica.

Se desejar, você pode classificar as colunas em ordem crescente (ASC) ou decrescente (DESC).

CRIAR [NÃO CONCLUÍDO] ÍNDICE <índicenome>
NA MESA <Nome da tabela>(coluna_nome ASC/DESC)

Qual índice você deve escolher?

Índices clusterizados e não clusterizados melhoram o tempo de consulta. Se a maioria de suas consultas forem operações SELECT em várias colunas da tabela, os índices clusterizados serão mais rápidos. No entanto, para operações INSERT ou UPDATE, os índices não agrupados são mais rápidos, pois o otimizador de consulta pode localizar a coluna diretamente do índice.

Como você pode ver, esses índices funcionam melhor para consultas SQL diferentes. A maioria dos bancos de dados SQL se beneficiará, portanto, de ter pelo menos um índice clusterizado e índices não clusterizados para colunas que são atualizadas regularmente.

A importância dos índices no SQL Server

Índices clusterizados e não clusterizados levam a um desempenho de consulta mais alto. Quando você executa uma consulta, o otimizador de consulta examina o índice em busca do local de armazenamento de uma linha e, em seguida, recupera as informações desse local. Isso é muito mais rápido do que verificar todas as linhas da tabela.

Você também pode usar índices não agrupados para resolver impasses de pesquisa de favoritos criando um índice não agrupado para colunas que as consultas envolvidas acessam.