Pular para o conteúdo principal

Questão de Banco de Dados — Administração de banco de dados — FUNDATEC 2025

Banco de DadosAdministração de banco de dados
Código
qg468571
Banca
FUNDATEC
Órgão
BRDE
Ano
2025
Nível
Superior
Cargo
Analista de Sistemas - Subárea Administração de Banco de Dados
Um DBA é chamado para analisar uma query de relatório que está executando lentamente. A query filtra registros usando a cláusula WHERE em uma coluna status que possui apenas 5 valores distintos ('A', 'I', 'P', 'C', 'X') em uma tabela com 10 milhões de linhas. A distribuição dos valores é muito desigual: 9.9 milhões têm status 'A' e os outros 100 mil estão distribuídos entre os demais status. Qual tipo de índice seria mais eficiente para acelerar consultas que buscam por um dos valores menos frequentes, como WHERE status = 'P'?
  1. AÚnico.
  2. BBitmap.
  3. CFuncional.
  4. DTextual.
  5. EClusterizado.
Revelar gabarito e comentário

GabaritoB — Bitmap.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Índices e Otimização de Consultas

Gabarito: letra B. O índice Bitmap é o mais eficiente para colunas com baixa cardinalidade (poucos valores distintos) e distribuição desigual, como a coluna status do enunciado. Ele cria um bitmap para cada valor possível, permitindo buscas muito rápidas por valores raros (ex.: 'P'), sem varrer toda a tabela. Índices únicos, funcionais, textuais ou clusterizados não se adequam a esse cenário.

A questão testa o conhecimento sobre tipos de índices e sua aplicabilidade. A chave está em perceber que a coluna status tem apenas 5 valores distintos e que a consulta busca um valor minoritário. O índice Bitmap foi projetado exatamente para esse tipo de situação (baixa cardinalidade, consultas seletivas), sendo amplamente usado em data warehouse.

Critério

Índice Bitmap (Gabarito)

Índice Único

Índice Funcional

Índice Textual

Índice Clusterizado

Cardinalidade da coluna

Baixa (poucos valores distintos)

Alta (valores únicos)

Qualquer (depende da expressão)

Alta (texto livre)

Qualquer

Distribuição dos dados

Adequado para distribuição desigual

Exige valores únicos

Indiferente

Indiferente

Indiferente

Eficiência para valor raro (ex.: 'P')

Máxima (bitmap esparso)

Inaplicável (violaria unicidade)

Não otimiza sem função na query

Inadequado (código curto)

Baixa (pouca seletividade)

Aplicação típica

Data warehouse, colunas categóricas

Chaves primárias, CPF

Consultas com funções (UPPER, SUBSTR)

Busca por palavras em documentos

Ordenação física da tabela

Cenário do enunciado

✅ Ideal (5 valores, 99% 'A')

❌ Impossível (9,9M repetições)

❌ Não há função na query

❌ Código de 1 caractere

❌ 5 valores não ordenam bem

Alternativa A — ❌ Incorreta

Índice Único (Unique) garante que não haja valores duplicados na coluna, o que não é o caso — há 9,9 milhões de registros com 'A'. Seria impossível criar um índice único sobre status justamente pela repetição dos valores.

Alternativa B — ✅ Correta ⟵ GABARITO

Índice Bitmap armazena um vetor de bits para cada valor distinto. Para o valor 'P', que aparece poucas vezes, o bitmap é esparso e a operação de recuperação é extremamente rápida (basta localizar os bits 1 no bitmap correspondente). É a escolha ideal para colunas com baixa cardinalidade e consultas por valores específicos.

Alternativa C — ❌ Incorreta

Índice Funcional (Function-based) é usado quando a condição da query envolve uma expressão ou função sobre a coluna (ex.: WHERE UPPER(status) = 'P'). Não há nenhuma função envolvida no filtro original (WHERE status = 'P'), portanto não se aplica.

Alternativa D — ❌ Incorreta

Índice Textual (Text) é projetado para busca em texto completo (full-text search), como palavras em documentos ou descrições. A coluna status contém códigos de um único caractere, não texto livre, sendo inadequado.

Alternativa E — ❌ Incorreta

Índice Clusterizado (Clustered) reorganiza fisicamente a tabela na ordem da coluna indexada. Como há apenas 5 valores distintos, a ordenação não trará benefício significativo para buscas seletivas; pior, para o valor majoritário 'A', ainda seria necessário varrer milhões de linhas. Além disso, uma tabela pode ter apenas um índice clusterizado, e ele não é otimizado para consultas de valores raros.

NÃO CAIA NESSA!

O candidato pode confundir o índice Bitmap com o Único ou o Clusterizado, pois ambos são comuns. A banca explora a intuição de que um índice clusterizado “organiza” os dados, mas isso não acelera a busca por um valor específico se a coluna tem pouca cardinalidade. Lembre-se: Bitmap é rei da baixa cardinalidade; clusterizado brilha em alta cardinalidade e consultas por intervalo.

Gabarito: letra B

Link permanente: /questoes/qg468571