Auditor Fiscal de Tributos Municipais - Tecnologia da Informação - 2º Dia
Em um sistema de e-commerce, foi criado um índice do tipo hash sobre a coluna preço da tabela produtos. Esse índice está sendo utilizado em consultas com filtros como:SELECT * FROM produtos WHERE preco BETWEEN 100 AND 300;I. Índices hash são ineficientes para consultas com operadores de intervalo, como BETWEEN, porque sua estrutura não mantém ordenação dos valores indexados.II. A atualização de índices hash ocorre na reconstrução completa do índice sempre que um novo registro é inserido na tabela produtos em sistemas de banco de dados como PostgreSQL e MySQL.III. A limitação dos índices hash em consultas de intervalo reside em sua restrição a campos numéricos, o que os tornam inutilizáveis para campos textuais ou data.É correto o que se afirma em:
AI, apenas.
BI e II, apenas.
CII e III, apenas.
DIII, apenas.
EI, II e III.
Revelar gabarito e comentário▾
GabaritoA — I, apenas.
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 hash em banco de dados
Gabarito: letra A (apenas a afirmativa I é correta). Índices hash usam uma função de espalhamento para distribuir chaves em buckets, sem manter ordenação, o que os torna inadequados para consultas de intervalo como BETWEEN. As afirmativas II e III contêm erros: a atualização de índices hash é incremental (não exige reconstrução completa) e eles podem ser aplicados a campos de qualquer tipo (texto, data etc.), não apenas numéricos.
A banca testa o conhecimento das características e limitações dos índices hash, uma estrutura de acesso auxiliar comum em banco de dados.
Afirmativa
Correta?
Motivo
I
✅ Sim
Índices hash não mantêm ordenação, sendo ineficientes para consultas de intervalo como BETWEEN.
II
❌ Não
A atualização de índices hash é incremental (apenas o bucket afetado), não exigindo reconstrução completa.
III
❌ Não
Índices hash podem ser aplicados a campos de qualquer tipo (texto, data, numérico), não apenas numéricos.
Afirmativa I — ✅ Correta
Correta. A estrutura de um índice hash é baseada em uma tabela de dispersão (hash table), onde os valores das chaves são mapeados para buckets por meio de uma função hash. Esse mapeamento não preserva a ordem crescente ou decrescente dos valores, portanto, consultas que exigem varredura ordenada — como BETWEEN, > ou < — não podem ser atendidas eficientemente. O banco de dados precisaria percorrer todos os buckets ou recorrer a uma varredura sequencial da tabela, perdendo a vantagem do índice.
PEGA ESSA DICA!
Memorize a diferença fundamental: índices árvore (B-tree, B+tree) mantêm ordenação e são ideais para intervalos; índices hash são ótimos para buscas por igualdade (=), mas não para intervalos.
Afirmativa II — ❌ Incorreta
Incorreta. A afirmativa alega que a inserção de um novo registro exige a reconstrução completa do índice hash. Na prática, os SGBDs modernos (PostgreSQL, MySQL e outros) implementam a atualização de índices hash de forma incremental: ao inserir, alterar ou remover uma linha, o índice é atualizado apenas para o bucket afetado pela chave, sem necessidade de recriar toda a estrutura. Em PostgreSQL, por exemplo, o índice hash é mantido dinamicamente com divisão de buckets conforme necessário (desde a versão 10, com suporte a WAL e recuperação). Em MySQL, o mecanismo MEMORY permite índices hash que são atualizados linha a linha. Portanto, a afirmação de “reconstrução completa” é falsa.
Afirmativa III — ❌ Incorreta
Incorreta. A limitação dos índices hash para consultas de intervalo não decorre de uma restrição a campos numéricos. Índices hash podem ser criados sobre colunas de qualquer tipo de dado para o qual exista uma função hash — incluindo strings (VARCHAR, TEXT) e datas (DATE, TIMESTAMP). O que os torna ineficientes para intervalos é a falta de ordenação, não o tipo do campo. Mesmo que a coluna seja numérica, o índice hash não auxilia num BETWEEN; da mesma forma, um campo textual com LIKE 'abc%' (prefixo) também não se beneficia de um índice hash (embora um índice B-tree suporte LIKE com prefixo fixo).
Gabarito: letra A — apenas a afirmativa I está correta.