Em um sistema de banco de dados relacional, que gerencia um...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: A - Índice B-tree
Tema central da questão:
A questão aborda otimização de consultas em bancos de dados relacionais, especificamente quando se precisa buscar registros em uma coluna textual usando o operador LIKE ‘prefixo%’. Para responder, é fundamental compreender como funcionam os diferentes tipos de índices e qual deles é mais apropriado para buscas por prefixo em tabelas grandes e com muita atualização.
Resumo teórico:
O índice B-tree (árvore-B) é o padrão nos bancos de dados relacionais (como PostgreSQL, Oracle e MySQL). Ele permite buscas rápidas por prefixo, ordenando os dados de modo eficiente para localizar rapidamente todos os registros que começam com uma determinada sequência de caracteres.
Segundo a documentação oficial do PostgreSQL e livros como "Database System Concepts" (Silberschatz), índices B-tree são ideais para consultas do tipo LIKE 'texto%', pois aproveitam a ordenação dos dados. Além disso, mantêm bom desempenho mesmo com tabelas grandes e alta frequência de inserções e atualizações.
Justificativa da alternativa correta:
A alternativa A (Índice B-tree) é a correta porque:
- Suporta eficientemente buscas por prefixo (LIKE 'prefixo%'), pois navega pela árvore até encontrar o início do prefixo e retorna os registros pertinentes.
- Mantém bom desempenho em tabelas de alta cardinalidade e com muitas operações de escrita, pois atualizações em B-tree são rápidas.
- É o tipo de índice padrão para colunas VARCHAR em bancos de dados relacionais.
Análise das alternativas incorretas:
B - Índice full-text: Voltado para buscas por palavras-chave em textos longos e análises semânticas, não é eficiente para buscas por prefixo.
C - Índice hash: Só é útil para buscas de igualdade (=), não serve para intervalos ou prefixos.
D - Índice bitmap: Adequado para colunas de baixa cardinalidade (poucos valores distintos), não para VARCHAR com milhões de valores diferentes.
E - Índice espacial: Usado para dados geográficos (geometria), não para textos.
Estratégia de interpretação:
Sempre identifique o padrão da consulta (LIKE 'prefixo%') e avalie o tipo de dados e o perfil de uso da tabela. Descarte índices que não suportam buscas por prefixo ou não se aplicam ao tipo de dado (textual).
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Gabarito: B) Índice B-tree
Características:
- Suporta ordenação dos dados, o que permite buscas por faixa e buscas prefixadas (ex: ).
- É o índice padrão nos SGBDs relacionais como PostgreSQL, MySQL (InnoDB), Oracle, SQL Server.
- Otimiza consultas com operadores como:
- =
- <, >, <=, >=
- BETWEEN
- LIKE 'prefix%'
Vantagens:
- Ideal para colunas de alta cardinalidade (muitos valores distintos).
- Boas performance de leitura em consultas prefixadas.
- Equilíbrio razoável entre leitura e escrita: não degrada tanto com atualizações frequentes.
B) Full-text -> Otimizado para busca por palavras ou termos internos (ex: ), não prefixos.
C) Hash -> Não suporta operadores de intervalo ou prefixo, só igualdade (=).
D) Bitmap -> Ideal para colunas de baixa cardinalidade (poucos valores distintos), não adequado para textos nem escrita frequente.
E) Espacial -> Usado para dados geográficos (pontos, polígonos etc.), não aplica a texto.
Fonte: ChatPGT
O índice B-tree é o mais adequado para consultas do tipo: LIKE 'prefixo%' porque ele mantém os valores ordenados, permitindo buscas eficientes por prefixo.
Além disso:
- funciona muito bem com alta cardinalidade;
- possui bom equilíbrio entre leitura e escrita;
- é o índice padrão da maioria dos SGBDs relacionais.
Analisando as demais alternativas:
- B) Full-text → mais indicado para busca textual complexa, palavras internas, relevância e linguagem natural.
- C) Hash → eficiente para igualdade (=), mas não para prefixos ou intervalos.
- D) Bitmap → melhor para baixa cardinalidade (ex.: sexo, status).
- E) Espacial → usado para dados geográficos e coordenadas.
Gabarito: A
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo