Pular para o conteúdo principal

Questão de Banco de Dados — Índices — FUNDATEC 2025

Banco de DadosÍndices
Código
qg468570
Banca
FUNDATEC
Órgão
BRDE
Ano
2025
Nível
Superior
Cargo
Analista de Sistemas - Subárea Administração de Banco de Dados
Ao analisar o plano de execução de uma query lenta, um DBA observa a operação TABLE ACCESS FULL sobre uma tabela grande. A query frequentemente filtra resultados usando uma cláusula WHERE em uma coluna data_cadastro. Não existem índices nesta coluna. Qual seria a ação mais direta e efetiva para melhorar o desempenho desta query?
  1. AExecutar o comando ANALYZE TABLE para atualizar as estatísticas.
  2. BAumentar o tamanho da área de memória PGA do SGBD.
  3. CCriar um índice na coluna data_cadastro.
  4. DReescrever a query utilizando uma hint de PARALLEL.
  5. EParticionar a tabela horizontalmente.
Revelar gabarito e comentário

GabaritoC — Criar um índice na coluna data_cadastro.

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 em Banco de Dados

Gabarito: letra C. A criação de um índice na coluna data_cadastro é a ação mais direta e eficaz para eliminar a operação TABLE ACCESS FULL, pois um índice fornece acesso rápido aos registros que satisfazem a cláusula WHERE, evitando a varredura completa da tabela.

A operação TABLE ACCESS FULL indica que o SGBD está lendo todas as linhas da tabela para encontrar os registros desejados. A ausência de índice na coluna filtrada força essa varredura. Índices são estruturas auxiliares que aceleram a recuperação de dados em consultas com condições de busca, conforme destaca o material de apoio: "os índices são estruturas de acesso auxiliares associados a tabelas, que são utilizados para agilizar a recuperação de registros em resposta a certas condições de pesquisa"

Ação

Descrição

Efeito sobre TABLE ACCESS FULL

É a ação mais direta e efetiva?

Criar índice na coluna data_cadastro

Cria uma estrutura de acesso auxiliar na coluna filtrada

Substitui a varredura completa por acesso indexado, eliminando o TABLE ACCESS FULL

✅ Sim

Executar ANALYZE TABLE

Atualiza estatísticas do otimizador

Não elimina a varredura; apenas pode melhorar a escolha do plano, mas sem índice o TABLE ACCESS FULL persiste

❌ Não

Aumentar a PGA

Expande a área de memória para operações como ordenação e hash join

Não elimina a varredura completa; o gargalo é o acesso sequencial, não a memória

❌ Não

Usar hint PARALLEL

Executa a varredura completa em paralelo com múltiplos processos

Ainda é uma varredura completa, apenas paralelizada; não resolve a raiz do problema

❌ Não

Particionar horizontalmente

Divide a tabela em partições (ex.: por mês/ano)

Pode reduzir a varredura se o filtro coincidir com a chave de partição, mas não é a ação mais direta

❌ Não

1Criar índice na coluna filtrada
2ANALYZE TABLE (só estatísticas)
3Aumentar PGA (não elimina varredura)
4Hint PARALLEL (ainda varre tudo)
5Particionar (menos direto)
Ação para TABLE ACCESS FULL
LEVELsoulevel.com.br
Ação para TABLE ACCESS FULL: Criar índice na coluna filtrada; ANALYZE TABLE (só estatísticas); Aumentar PGA (não elimina varredura); Hint PARALLEL (ainda varre tudo); Particionar (menos direto)

Alternativa A — ❌ Incorreta

Executar ANALYZE TABLE atualiza as estatísticas do otimizador, mas não cria um índice. Pode até melhorar a escolha do plano, mas sem índice o TABLE ACCESS FULL ainda será o método de acesso. Não é a ação mais direta para o problema.

Alternativa B — ❌ Incorreta

Aumentar a PGA (Program Global Area) pode beneficiar operações que exigem memória, como ordenação e hash join, mas não elimina a necessidade de varrer a tabela inteira. O gargalo é o acesso sequencial, não a área de memória.

Alternativa C — ✅ Correta ⟵ GABARITO

Criar um índice na coluna data_cadastro fornece um caminho de acesso direto para as linhas que correspondem ao filtro. O TABLE ACCESS FULL é substituído por um acesso indexado, reduzindo drasticamente o número de blocos lidos.

Alternativa D — ❌ Incorreta

Usar uma hint PARALLEL permite que o SGBD execute o TABLE ACCESS FULL em paralelo, dividindo a varredura entre múltiplos processos. Embora possa reduzir o tempo de resposta, ainda é uma varredura completa, e não resolve a raiz do problema (falta de índice). Além disso, a hint é uma solução menos direta e pode não ser efetiva em todas as situações.

Alternativa E — ❌ Incorreta

Particionar horizontalmente a tabela pode melhorar o desempenho se a filtragem for por partição (ex.: por mês/ano), mas não é a ação mais direta para uma coluna específica. Envolve redesign da tabela e maior complexidade de manutenção. A criação de um índice é mais simples e imediata.

Gabarito: letra C.

Link permanente: /questoes/qg468570