Questão de Banco de Dados — SGBD - Sistema de Gerenciamento de Banco de Dados — FGV 2026
Banco de Dados›SGBD - Sistema de Gerenciamento de Banco de Dados
Código
gp018294
Banca
FGV
Órgão
TJ-SC
Ano
2026
Cargo
Analista de Sistemas
Um Tribunal de Justiça identificou degradação de desempenho em
consultas que filtram registros por múltiplas colunas combinadas
por operadores lógicos AND na cláusula WHERE. A equipe de
administração de banco de dados (DBA) decide criar um índice
composto (multi-column index) para otimizar essas operações.
Considerando o funcionamento de índices compostos baseados
em árvores balanceadas (B-Tree), em sistemas gerenciadores de
bancos de dados relacionais, assinale a afirmativa correta.
AA ordem das colunas na definição do índice não interfere emsua eficiência, uma vez que o otimizador de consultasreordena os predicados automaticamente para garantir o usodo índice.
BA utilização do índice composto é otimizada quando os
predicados da consulta seguem a ordem de definição das
colunas no índice, respeitando a regra do prefixo à esquerda
(leftmost prefix).
CUm índice composto só pode ser utilizado pelo motor deexecução se todas as colunas que o compõem foremobrigatoriamente referenciadas na cláusula de filtragem daconsulta.
DA criação de índices compostos em colunas com baixa
seletividade garante, de forma determinística, a substituição
do escaneamento sequencial de tabela (table scan) pelo
escaneamento de índice (index scan).
EÍndices compostos tornam-se desnecessários em sistemas
modernos que implementam técnicas como index skip scan,
sendo a ordem das colunas irrelevante para o desempenho das
consultas.
Revelar gabarito e comentário▾
GabaritoB — A utilização do índice composto é otimizada quando os
predicados da consulta seguem a ordem de definição das
colunas no índice, respeitando a regra do prefixo à esquerda
(leftmost prefix).
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 compostos em B-Tree: a regra do prefixo à esquerda
Gabarito: letra B. Em um índice composto baseado em B-Tree, a ordem das colunas é fundamental: o otimizador só consegue usar o índice de forma eficiente quando os predicados da consulta respeitam a ordem de definição das colunas, seguindo a regra do prefixo à esquerda (leftmost prefix). Essa é a propriedade central que a alternativa B descreve corretamente.
Um índice composto é uma estrutura de dados que organiza as entradas da tabela com base em múltiplas colunas, em uma ordem específica. Imagine um índice criado sobre as colunas (sobrenome, nome, idade). Internamente, a B-Tree ordena os registros primeiro por sobrenome; dentro de cada sobrenome, ordena por nome; e dentro de cada nome, ordena por idade. Essa ordenação hierárquica é o que permite buscas eficientes por prefixos.
A regra do prefixo à esquerda (ou leftmost prefix rule) determina que o índice pode ser usado para otimizar consultas que filtram por um prefixo contíguo das colunas do índice, começando pela primeira coluna. Ou seja, com o índice (sobrenome, nome, idade), o otimizador pode usar o índice para consultas que filtram por:
apenas sobrenome;
sobrenome e nome;
sobrenome, nome e idade.
Por outro lado, uma consulta que filtra apenas por nome ou apenas por idadenão consegue usar o índice de forma eficiente, pois essas colunas não formam um prefixo à esquerda do índice. O otimizador precisaria percorrer todas as entradas do índice (um index scan completo) ou recorrer ao table scan.
A razão para essa limitação é estrutural: a B-Tree ordena os dados pela primeira coluna como critério principal. Sem uma condição sobre a primeira coluna, o banco não sabe em qual parte da árvore procurar, pois os valores da segunda coluna estão espalhados por toda a estrutura. É como procurar um nome em uma lista telefônica ordenada por sobrenome sem saber o sobrenome — você teria que ler a lista inteira.
A pegadinha que a banca explora neste tema é justamente a tentação de achar que o otimizador "reordena" os predicados ou que a ordem das colunas é irrelevante. Na prática, o otimizador pode reordenar os predicados dentro de um mesmo prefixo, mas não pode "pular" colunas. Por exemplo, com o índice (a, b, c), uma consulta com WHERE b = ? AND a = ? pode ser otimizada porque o otimizador reordena para a = ? AND b = ?, mas uma consulta com WHERE b = ? AND c = ? não pode usar o índice, pois falta a coluna a (a primeira do prefixo).
Guarde essa fronteira: a ordem das colunas no índice define quais prefixos de colunas podem ser usados nas consultas. É exatamente nessa fronteira que as alternativas se dividem.
Índice composto (B-Tree)
1Regra do prefixo à esquerda
Ordem das colunas é fundamental
Uso eficiente: predicados seguem a ordem
Pode usar prefixo parcial (a, ab, abc)
2Limitações
Sem a 1ª coluna: não usa o índice
Colunas de baixa seletividade: prefere table scan
3O que o otimizador faz
Reordena predicados dentro do prefixo
Não cria prefixo inexistente
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que a ordem das colunas não interfere na eficiência porque o otimizador reordena os predicados. Isso é falso: o otimizador pode reordenar predicados dentro de um prefixo contíguo, mas não pode usar o índice se a consulta não filtrar pela primeira coluna do índice. A ordem das colunas é determinante para a eficiência.
Alternativa B — ✅ Correta ⟵ GABARITO
Descreve exatamente a regra do prefixo à esquerda: o índice composto é otimizado quando os predicados seguem a ordem de definição das colunas. É o princípio fundamental do funcionamento de índices compostos em B-Tree.
Alternativa C — ❌ Incorreta
Afirma que todas as colunas do índice precisam ser referenciadas na consulta. Isso é falso: o índice pode ser usado com um prefixo parcial. Por exemplo, com o índice (a, b, c), uma consulta com WHERE a = ? já pode usar o índice, sem precisar referenciar b ou c.
Alternativa D — ❌ Incorreta
Afirma que índices compostos em colunas de baixa seletividade garantem, de forma determinística, a substituição do table scan pelo index scan. Isso é falso por dois motivos: (1) colunas de baixa seletividade (poucos valores distintos) tendem a fazer o otimizador preferir o table scan, pois o índice não reduz suficientemente o número de linhas; (2) a decisão do otimizador é baseada em estatísticas e custo estimado, nunca é "determinística" nesse sentido.
Alternativa E — ❌ Incorreta
Afirma que índices compostos tornam-se desnecessários em sistemas com index skip scan e que a ordem das colunas é irrelevante. Isso é falso: o index skip scan é uma técnica que permite usar o índice mesmo sem filtrar pela primeira coluna, mas ela não elimina a necessidade de índices compostos nem torna a ordem irrelevante. O skip scan é uma otimização adicional, não uma substituição da regra do prefixo.
NÃO CAIA NESSA!
A banca explora a confusão entre o que o otimizador pode fazer (reordenar predicados dentro de um prefixo) e o que ele não pode fazer (usar o índice sem a primeira coluna). A alternativa A parece plausível porque o otimizador realmente reordena predicados, mas a alternativa B é a correta porque captura a regra do prefixo à esquerda. Fique atento: o otimizador reordena dentro do prefixo, não cria um prefixo que não existe.
PEGA ESSA DICA!
Para resolver questões sobre índices compostos, pergunte-se: "A consulta filtra pela primeira coluna do índice?" Se sim, o índice pode ser usado (parcial ou totalmente). Se não, o índice provavelmente não será usado de forma eficiente. Memorize a regra: prefixo à esquerda = colunas contíguas a partir da primeira.