O que é um índice?
Um índice é uma chave construída a partir de uma ou mais colunas no banco de dados que acelera a busca de linhas da tabela ou exibição. Essa chave ajuda um banco de dados como Oracle, SQL Server, MySQL, etc. a encontrar a linha associada aos valores-chave rapidamente.
Dois tipos de índices são:
- Índice agrupado
- Índice não agrupado
Neste tutorial, você aprenderá:
- O que é um índice?
- O que é um índice clusterizado?
- O que é índice não agrupado?
- Característica do índice agrupado
- Características de índices não agrupados
- Um exemplo de índice clusterizado
- Um exemplo de índice não agrupado
- Diferenças entre índice agrupado e índice não agrupado
- Vantagens do índice agrupado
- Vantagens do índice não agrupado
- Desvantagens do índice agrupado
- Desvantagens do índice não agrupado
O que é um índice clusterizado?
O índice de cluster é um tipo de índice que classifica as linhas de dados na tabela de acordo com seus valores-chave. No Banco de Dados, há apenas um índice clusterizado por tabela.
Um índice clusterizado define a ordem em que os dados são armazenados na tabela, que podem ser classificados apenas de uma maneira. Portanto, pode haver apenas um único índice clusterizado para cada tabela. Em um RDBMS, geralmente, a chave primária permite que você crie um índice clusterizado com base nessa coluna específica.
O que é índice não agrupado?
Um índice não agrupado armazena os dados em um local e os índices em outro. O índice contém ponteiros para a localização desses dados. Uma única tabela pode ter muitos índices não agrupados, já que um índice no índice não agrupado é armazenado em locais diferentes.
Por exemplo, um livro pode ter mais de um índice, um no início que exibe o conteúdo de uma unidade de livro, enquanto o segundo índice mostra o índice de termos em ordem alfabética.
Um índice não agrupado é definido no campo não ordenado da tabela. Este tipo de método de indexação ajuda a melhorar o desempenho de consultas que usam chaves que não são atribuídas como chave primária. Um índice não agrupado permite adicionar uma chave exclusiva para uma tabela.
DIFERENÇA CHAVE
- O índice de cluster é um tipo de índice que classifica as linhas de dados na tabela em seus valores-chave, enquanto o índice não clusterizado armazena os dados em um local e os índices em outro.
- O índice clusterizado armazena páginas de dados nos nós folha do índice, enquanto o método de índice não clusterizado nunca armazena páginas de dados nos nós folha do índice.
- O índice de cluster não requer espaço em disco adicional, enquanto o índice não clusterizado requer espaço em disco adicional.
- O índice de cluster oferece acesso mais rápido aos dados, por outro lado, o índice não clusterizado é mais lento.
Característica do índice agrupado
- Armazenamento de dados padrão e classificado
- Use apenas uma ou mais colunas para um índice
- Ajuda você a armazenar dados e indexar juntos
- Fragmentação
- Operações
- Varredura de índice agrupado e busca de índice
- Pesquisa de chave
Características de índices não agrupados
- Armazenar apenas valores-chave
- Indicadores para linhas de índice Heap / Clustered
- Permite acesso a dados secundários
- Ponte para os dados
- Operações de Index Scan e Index Seek
- Você pode criar um índice não clusterizado para uma tabela ou exibição
- Cada linha de índice no índice não clusterizado armazena o valor da chave não clusterizada e um localizador de linha
Um exemplo de índice clusterizado
No exemplo abaixo, SalesOrderDetailID é o índice clusterizado. Consulta de amostra para recuperar dados
SELECT CarrierTrackingNumber, UnitPriceFROM SalesDataWHERE SalesOrderDetailID = 6
Um exemplo de índice não agrupado
No exemplo a seguir, um índice não clusted é criado em OrderQty e ProductID da seguinte forma
CREATE INDEX myIndex ONSalesData (ProductID, OrderQty)
A consulta a seguir será recuperada mais rapidamente em comparação com o índice clusterizado.
SELECT Product ID, OrderQtyFROM SalesDataWHERE ProductID = 714
Diferenças entre índice agrupado e índice não agrupado
Parâmetros | Aglomerado | Não agrupado |
---|---|---|
Use para | Você pode classificar os registros e armazenar o índice clusterizado fisicamente na memória de acordo com o pedido. | Um índice não agrupado ajuda a criar uma ordem lógica para linhas de dados e usa ponteiros para arquivos de dados físicos. |
Método de armazenamento | Permite que você armazene páginas de dados nos nós folha do índice. | Este método de indexação nunca armazena páginas de dados nos nós folha do índice. |
Tamanho | O tamanho do índice clusterizado é muito grande. | O tamanho do índice não agrupado é pequeno em comparação com o índice agrupado. |
Acesso a dados | Mais rápido | Mais lento em comparação com o índice clusterizado |
Espaço adicional em disco | Não requerido | Necessário para armazenar o índice separadamente |
Tipo de chave | Por padrão, as chaves primárias da tabela são um índice agrupado. | Ele pode ser usado com restrição única na tabela que atua como uma chave composta. |
Característica principal | Um índice clusterizado pode melhorar o desempenho da recuperação de dados. | Deve ser criado em colunas que são usadas em junções. |
Vantagens do índice agrupado
Os prós / benefícios do índice clusterizado são:
- Os índices agrupados são uma opção ideal para intervalo ou agrupamento com consultas do tipo máximo, mínimo e contagem
- Nesse tipo de índice, uma pesquisa pode ir direto para um ponto específico nos dados para que você possa continuar lendo sequencialmente a partir daí.
- O método de índice agrupado usa o mecanismo de localização para localizar a entrada do índice no início de um intervalo.
- É um método eficaz para pesquisas de intervalo quando um intervalo de valores-chave de pesquisa é solicitado.
- Ajuda a minimizar as transferências de página e maximizar os acessos do cache.
Vantagens do índice não agrupado
Os prós de usar índice não agrupado são:
- Um índice sem cluster ajuda a recuperar dados rapidamente da tabela do banco de dados.
- Ajuda a evitar o custo indireto associado ao índice clusterizado
- Uma tabela pode ter vários índices não agrupados no RDBMS. Portanto, ele pode ser usado para criar mais de um índice.
Desvantagens do índice agrupado
Aqui, estão os contras / desvantagens do uso de índice clusterizado:
- Muitas inserções em ordem não sequencial
- Um índice clusterizado cria muitas divisões de página constantes, que incluem páginas de dados e páginas de índice.
- Trabalho extra para SQL para inserções, atualizações e exclusões.
- Um índice clusterizado leva mais tempo para atualizar os registros quando os campos no índice clusterizado são alterados.
- Os nós folha contêm principalmente páginas de dados no índice clusterizado.
Desvantagens do índice não agrupado
Aqui, estão os contras / desvantagens do uso de índices não agrupados:
- Um índice não agrupado ajuda a armazenar dados em uma ordem lógica, mas não permite classificar as linhas de dados fisicamente.
- O processo de pesquisa em índices não agrupados torna-se caro.
- Cada vez que a chave de cluster é atualizada, uma atualização correspondente é necessária no índice não clusterizado, uma vez que ele armazena a chave de cluster.