MySQL: Índice Secundário (Secondary Index)
O que é um Índice Secundário (Secondary Index)?
Um Índice Secundário (Secondary Index) é um tipo de índice criado em colunas diferentes da Chave Primária. O objetivo de um Índice Secundário é acelerar as consultas de pesquisa baseadas em colunas diferentes da Chave Primária. Quando uma consulta de pesquisa é executada em uma coluna com um Índice Secundário, o MySQL pode usar esse índice para encontrar dados mais rapidamente, evitando uma varredura completa da tabela.
Estrutura do Índice Secundário
Um Índice Secundário é normalmente organizado como uma B+ Tree, semelhante a um Índice Chave Primário. No entanto, uma grande diferença é que os nós folha de um Índice Secundário não armazenam os dados reais da linha, mas sim os valores da Chave Primária. Ao pesquisar usando um Índice Secundário, o MySQL encontra o valor da Chave Primária correspondente e então usa esse valor para acessar os dados atuais na tabela.
Por exemplo:
Em uma tabela onde a coluna "email" possui um Índice Secundário, os nós folha deste índice conterão os valores de "email" junto com as Chaves Primárias correspondentes. Ao procurar por um "e-mail" específico, o MySQL usa o Índice Secundário para encontrar a Chave Primária e então acessa os dados com base nessa chave.
Tipos comuns de estruturas de índice secundário
- Índice de B+ Tree: Este é o tipo mais comum de estrutura de índice secundário, apresentando bom desempenho com consultas de pesquisa baseadas em colunas com uma característica de ordem (classificação).
- Índice Hash: Fornece velocidade de pesquisa rápida, mas não oferece suporte adequado para consultas baseadas em pedidos ou intervalos. O índice Hash é menos comumente usado no MySQL.
- Índice Fulltext: Otimizado para consultas de pesquisa de texto, o Índice Fulltext é adequado para colunas que contêm textos longos, como artigos ou descrições de produtos.
Comparação do Índice Secundário e do Índice Clusterizado
Estrutura
Um Índice Clusterizado organiza os dados da tabela diretamente de acordo com a ordem da Chave Primária, ou seja, os dados físicos são armazenados no disco na ordem deste índice. Por outro lado, um Índice Secundário contém apenas a Chave Primária e não afeta a estrutura física da tabela.
Desempenho
Um Índice Clusterizado geralmente oferece maior desempenho de consulta para pesquisas baseadas na Chave Primária, uma vez que não requer acesso adicional a um Índice Secundário. No entanto, um Índice Secundário é útil ao otimizar consultas baseadas em colunas diferentes da Chave Primária.
Flexibilidade
Um Índice Clusterizado limita a tabela a um único índice, enquanto uma tabela pode ter vários Índices Secundários para suportar vários tipos de consultas.
Origem: Linkedin: Đinh Quang Tùng - Backend Developer at HBLAB JSC
Nenhum comentário