Indexação em SGBD: O que é, Tipos de Índices com EXEMPLOS

⚡ Resumo Inteligente

A indexação em bancos de dados é uma técnica de estruturação de dados que recupera registros rapidamente por meio de mapeamento.ping Uma chave de busca para o endereço em disco do seu registro. Índices primários, secundários, de agrupamento, multiníveis e em árvore B tratam cada espaço de negociação, velocidade e manutenção de maneira diferente.

  • 🗂️ Ideia central: Um índice é uma pequena tabela de duas colunas que associa uma chave a um ponteiro para o bloco de disco do registro.
  • 📇 Índice primário: Um arquivo ordenado com a chave, dividido em variantes densas e esparsas.
  • 🔎 Denso vs. Esparso: Um índice denso armazena uma entrada por chave; um índice esparso armazena menos entradas para economizar espaço.
  • 🏷️ Índice secundário: Baseado em um campo não ordenável, ele usa buckets para alcançar todos os registros correspondentes.
  • 📚 ClusterÍndice de ing: Agrupa linhas que compartilham uma chave não exclusiva em um único cluster.
  • ???? Índice da Árvore B: Uma árvore multinível balanceada cujos nós folha interligados suportam acesso aleatório e sequencial.
  • ⚖️ Troca: Os índices aceleram as leituras, mas tornam as inserções, atualizações e exclusões mais lentas, além de consumirem espaço extra.

Indexação em Banco de Dados

O que é Indexação?

Indexação Um índice é uma técnica de estrutura de dados que permite recuperar registros de um arquivo de banco de dados rapidamente. Um índice é uma pequena tabela com apenas duas colunas. A primeira coluna contém uma cópia da chave primária ou candidata de uma tabela. Sua segunda coluna contém um conjunto de... ponteiros Contém o endereço do bloco de disco onde esse valor de chave específico está armazenado.

Um índice:

  • Recebe uma chave de pesquisa como entrada.
  • Retorna com eficiência uma coleção de registros correspondentes.

Sem um índice, o banco de dados precisa examinar cada linha para responder a uma consulta. Com um índice, ele pula diretamente para o bloco correspondente, e é por isso que o tipo de índice escolhido tem um grande impacto no desempenho.

Tipos de indexação em SGBD

Tipo de índices no banco de dados
Tipo de índices no banco de dados

A indexação em um banco de dados é definida com base em seus atributos de indexação. Os dois principais tipos de métodos de indexação são:

  • Indexação Primária
  • Indexação Secundária

Índice primário em DBMS

Um índice primário é um arquivo ordenado de tamanho fixo com dois campos. O primeiro campo é o mesmo que a chave primária, e o segundo campo aponta para aquele bloco de dados específico. No índice primário, existe sempre uma relação um-para-um entre as entradas na tabela de índice.

O índice primário é ainda subdividido em dois tipos:

  • Índice Denso
  • Índice Esparso

Índice Denso

Em um índice denso, um registro é criado para cada valor de chave de pesquisa no banco de dados. Isso ajuda a pesquisar mais rapidamente, mas requer mais espaço para armazenar os registros do índice. Nesse método, os registros contêm o valor da chave de pesquisa e apontam para o registro real no disco.

Índice denso em SGBD

Índice Esparso

Um índice esparso é um registro de índice que aparece apenas para alguns dos valores no arquivo. O índice esparso ajuda a resolver os problemas da indexação densa em DBMSNessa técnica, um intervalo de colunas de índice armazena o mesmo endereço de bloco de dados e, quando os dados precisam ser recuperados, esse endereço de bloco é buscado.

Um índice esparso armazena registros de índice apenas para alguns valores de chave de pesquisa. Ele requer menos espaço e menos manutenção para inserções e exclusões, mas é mais lento que um índice denso para localizar registros.

Abaixo, segue um exemplo de índice esparso em um banco de dados.

Índice esparso em SGBD

Índice denso vs. Índice esparso

As duas variantes principais do índice apresentam vantagens e desvantagens opostas, resumidas abaixo.

Aspecto Índice Denso Índice Esparso
entradas Uma por chave de pesquisa Um por bloco
Espaço (Space) Mais Less
Velocidade de pesquisa Mais rápido Mais lento
Manutenção Mais elevado Abaixe

Índice secundário em DBMS

Em um SGBD, um índice secundário pode ser gerado por um campo que possui um valor único para cada registro e deve ser uma chave candidata. Também é conhecido como índice não clusterizado.

Essa técnica de indexação de banco de dados em dois níveis é usada para reduzir o mapa.ping tamanho do primeiro nível. Para o primeiro nível, uma grande variedade de números é selecionada, portanto o mapaping O tamanho permanece sempre pequeno.

Exemplo de índice secundário

Vamos entender a indexação secundária com um exemplo de índice de banco de dados. Em um banco de dados de contas bancárias, os dados são armazenados sequencialmente por número de conta (acc_no), mas você pode querer encontrar todas as contas em uma agência específica do banco ABC.

Aqui, você pode ter um índice secundário para cada chave de pesquisa. O registro do índice aponta para um bucket que contém ponteiros para todos os registros com esse valor específico de chave de pesquisa.

Índice secundário em SGBD

Clusterindexando no DBMS

Em um índice clusterizado, os próprios registros são armazenados no índice, e não ponteiros. Às vezes, o índice é criado em colunas que não são chaves primárias, que podem não ser exclusivas para cada registro. Nessa situação, você pode agrupar duas ou mais colunas para obter valores exclusivos e criar um índice, chamado índice clusterizado. Isso também ajuda a identificar o registro mais rapidamente.

Exemplo: Suponha que uma empresa tenha contratado muitos funcionários para diversos departamentos. Nesse caso, deve-se criar um índice de agrupamento para todos os funcionários que pertencem ao mesmo departamento.

Eles são considerados como um único cluster, e o índice aponta para o cluster como um todo. Aqui, Department_no é uma chave não exclusiva.

O que é um índice multinível?

A indexação multinível é criada quando um índice primário não cabe na memória. Nesse tipo de método de indexação, é possível reduzir o número de acessos ao disco necessários para alcançar qualquer registro. Os registros são mantidos em disco como um arquivo sequencial, e um índice esparso é criado sobre esse arquivo.

Índice multinível em SGBD

Índice B-Tree

O índice B-tree é a estrutura de dados mais utilizada para indexação baseada em árvores em SGBDs. Trata-se de um formato multinível de indexação baseada em árvores que utiliza balanceamento de índices. árvores binárias de buscaTodos os nós folha da árvore B contêm os ponteiros de dados reais.

Além disso, todos os nós folha estão interligados por uma lista ligada, o que permite que uma árvore B suporte acesso aleatório e sequencial.

Índice B-tree em SGBD

  • Os nós folha devem ter entre 2 e 4 valores.
  • Cada caminho da raiz até uma folha tem, em sua maior parte, o mesmo comprimento.
  • Os nós não-folha, com exceção do nó raiz, possuem entre 3 e 5 nós filhos.
  • Cada nó que não seja raiz ou folha tem entre n/2 e n filhos.

Onde predominam as pesquisas por correspondência exata e as pesquisas por intervalo são raras, Hashing Pode ser uma alternativa mais rápida a um índice de árvore B.

Vantagens da indexação

As principais vantagens da indexação são:

  • Isso ajuda a reduzir o número total de operações de E/S necessárias para recuperar dados, de forma que você não precise acessar uma linha diretamente da tabela.
  • Oferece aos usuários busca e recuperação de dados mais rápidas.
  • Isso pode reduzir o espaço ocupado pelas tabelas, pois não é necessário armazenar o ROWID no índice para cada linha vinculada.
  • Os dados nos nós folha já estão ordenados pelo valor da chave.

Desvantagens da indexação

As principais desvantagens da indexação são:

  • Para realizar a indexação, você precisa de uma chave primária na tabela com um valor único.
  • Não é possível criar outro índice em dados que já estejam organizados por índice da mesma maneira.
  • Você não tem permissão para particionar uma tabela organizada por índice.
  • A indexação diminui o desempenho em consultas INSERT, DELETE e UPDATE.

Perguntas Frequentes

Um índice primário é construído com base no campo pelo qual o arquivo é ordenado, geralmente a chave primária. Um índice secundário é construído com base em um campo diferente, portanto, precisa de buckets para alcançar todos os registros correspondentes.

Uma árvore B permanece balanceada, de modo que cada busca requer um número semelhante de leituras de disco, e suas folhas encadeadas suportam varreduras de intervalo. Isso a torna robusta tanto para consultas pontuais quanto para consultas de intervalo.

Cada inserção, atualização e exclusão também deve manter cada índice. Mais índices aceleram as leituras, mas aumentam a sobrecarga de gravação e o armazenamento, portanto, eles devem ser criados apenas onde as consultas realmente se beneficiam.

Os consultores de índice com IA estudam a carga de trabalho das consultas e recomendam índices que reduziriam os custos ao máximo, ao mesmo tempo que sinalizam índices existentes que nunca são usados ​​e apenas aumentam a sobrecarga.

Um índice clusterizado armazena as próprias linhas em ordem de índice, portanto uma tabela pode ter apenas um. Um índice não clusterizado armazena ponteiros para as linhas, portanto uma tabela pode ter vários índices não clusterizados.

Resuma esta postagem com: