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?
AExecutar o comando ANALYZE TABLE para atualizar as estatísticas.
BAumentar o tamanho da área de memória PGA do SGBD.
CCriar um índice na coluna data_cadastro.
DReescrever a query utilizando uma hint de PARALLEL.
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
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.