Artigo
· Dez. 22 2min de leitura

Índices: O Poder Silencioso por Trás de Consultas Rápidas

O Poder da Indexação em Tabelas de Banco de Dados

Ao trabalhar com bancos de dados, a maioria dos desenvolvedores entende o conceito de um índice e por que ele é usado: para acelerar a recuperação de dados. Mas o real impacto da indexação muitas vezes só fica claro quando comparamos cenários com e sem ela.

Você sabe o que acontece sem um índice?
Imagine uma tabela com três colunas: Name, Age, e MobileNumber.


Considere esta consulta:

Se a coluna Idade (Age) não tiver um índice, o motor do banco de dados irá:

  • Verificar se o campo da condição WHERE possui um índice.
  • Se não houver, ele fará uma varredura completa da tabela.
  • Para cada linha, ele verificará o valor da Idade e retornará as correspondências.

Isso significa que o motor atravessa toda a estrutura de dados, o que consome muito tempo em tabelas grandes.

O que acontece com um índice?

Agora, se a coluna Idade estiver indexada, o processo muda drasticamente:

  • O motor vai diretamente para a estrutura do índice.
  • Ele encontra o nó para Idade = 26.
  • O índice aponta para os IDs de registro correspondentes na tabela principal.
  • O resultado é obtido quase instantaneamente.

É por isso que a indexação é uma ferramenta de otimização tão poderosa.

Uma Lição da Vida Real
Recentemente, encontramos uma situação interessante que destacou a importância dos índices. Nossa tabela tinha 5 registros e a coluna Idade estava indexada. Então, por engano, excluímos duas entradas da estrutura do índice (não da tabela principal). Essas entradas correspondiam aos IDs X001 e X005, ambos com Idade = 26.


Quando executamos:
SELECT ID, Age, EmpId, Mobile, NameFROM Company.Employee WHERE Age = 26 

Esperávamos 3 registros (já que a tabela principal ainda os tinha), mas apenas 2 registros apareceram.

Por quê? Porque a consulta confiou no índice, e o índice estava incompleto.

Conclusão Principal
Os índices são poderosos, mas devem ser mantidos adequadamente. Se um índice for excluído acidentalmente ou corrompido, não se preocupe; você pode reconstruí-lo usando o comando abaixo:

Do ##Class(Company.Employee).%BuildIndices()

Moral da história: Índices tornam as consultas rápidas, mas também se tornam a "fonte única da verdade" para a recuperação. Manipule-os com cuidado! 😅

Discussão (0)1
Entre ou crie uma conta para continuar