Questão de Banco de Dados — PL/SQL e Outras Extensões SQL — FCC 2026
Banco de Dados›PL/SQL e Outras Extensões SQL
Código
fc142375
Banca
FCC
Órgão
MPE SE
Ano
2026
Cargo
Ana ( )
O banco de dados tribunal_db armazena milhões de registros de processos. Para manter a integridade e desempenho, foi criado o script abaixo em T-SQL que deve ser executado semanalmente:
BACKUP DATABASE tribunal_db TO DISK = 'C:\Backups\tribunal_db.bak' WITH INIT, NAME = 'BackupCompletoTribunal'; _I_
Em condições ideais e considerando que a execução ocorre regularmente, o comando que deve constar na lacuna I de forma a reduzir a fragmentação de índices, otimizar o acesso aos dados da tabela processo e melhorar a performance das consultas é:
ACREATE CLUSTERED INDEX ON processo(id_processo);
BALTER INDEX ALL ON processo REORGANIZE;
CBACKUP LOG processo;
DUPDATE STATISTICS processo;
EDROP INDEX processo;
Revelar gabarito e comentário▾
GabaritoB — ALTER INDEX ALL ON processo REORGANIZE;
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”.
Manutenção de índices no SQL Server: REORGANIZE vs. REBUILD
Gabarito: letra B. Para reduzir a fragmentação de índices e otimizar o acesso aos dados da tabela processo, o comando correto é ALTER INDEX ALL ON processo REORGANIZE, que reorganiza todos os índices da tabela de forma online e com baixo consumo de recursos — exatamente o que o enunciado pede para uma manutenção semanal. As demais alternativas ou não tratam de fragmentação (como UPDATE STATISTICS e BACKUP LOG) ou são destrutivas/incompletas (DROP INDEX e CREATE CLUSTERED INDEX).
A fragmentação de índices é um fenômeno natural em bancos de dados com muitas operações de inserção, atualização e exclusão (como o tribunal_db com milhões de registros). Quando páginas de dados e de índices ficam desordenadas ou com espaço livre interno, o SQL Server precisa ler mais páginas do que o necessário para responder a uma consulta, degradando a performance. Para combater isso, o SQL Server oferece dois comandos principais de manutenção: ALTER INDEX ... REORGANIZE e ALTER INDEX ... REBUILD. A diferença crucial entre eles está no nível de intervenção e no custo:
Critério
REORGANIZE
REBUILD
O que faz
Reordena fisicamente as páginas do índice, compactando-as e eliminando a fragmentação lógica
Reconstrói o índice do zero, criando uma nova estrutura física
Online/Offline
Sempre online (não bloqueia consultas)
Pode ser online (Enterprise) ou offline (bloqueia)
Recursos
Baixo consumo de CPU e I/O
Alto consumo de CPU e I/O
Fragmentação ideal
Até 30%
Acima de 30%
Frequência
Manutenção leve, pode ser semanal
Manutenção pesada, geralmente mensal ou sob demanda
No contexto da questão, a manutenção é semanal e o objetivo é reduzir a fragmentação de forma leve e contínua — o que aponta diretamente para o REORGANIZE. O comando ALTER INDEX ALL ON processo REORGANIZE reorganiza todos os índices da tabela processo (daí o ALL), sem interromper o acesso aos dados, ideal para um banco em produção com milhões de registros.
A pegadinha da banca está em confundir REORGANIZE com REBUILD (que seria ALTER INDEX ALL ON processo REBUILD) ou com UPDATE STATISTICS, que atualiza as estatísticas de distribuição de dados (usadas pelo otimizador de consultas) mas não mexe na estrutura física do índice. O UPDATE STATISTICS melhora a performance das consultas ao dar informações mais precisas ao otimizador, mas não reduz a fragmentação — é uma manutenção complementar, não substituta.
Guarde a fronteira: fragmentação é problema físico (páginas desordenadas) → resolve com REORGANIZE/REBUILD; estatísticas desatualizadas é problema lógico (otimizador sem dados precisos) → resolve com UPDATE STATISTICS. É exatamente nessa distinção que as alternativas se dividem.
Manutenção de índices (SQL Server): REORGANIZE (Fragmentação até 30%, Online (não bloqueia), Baixo consumo de recursos, Manutenção semanal); REBUILD (Fragmentação acima de 30%, Pode ser offline, Alto consumo de recursos, Manutenção mensal); UPDATE STATISTICS (Atualiza dados do otimizador, Não mexe na estrutura física, Manutenção complementar)
Alternativa A — ❌ Incorreta
CREATE CLUSTERED INDEX ON processo(id_processo) tenta criar um índice clusterizado na tabela. Dois problemas: (1) a sintaxe está incompleta — falta o nome do índice e a cláusula ON correta (seria CREATE CLUSTERED INDEX IX_Processo ON processo(id_processo)); (2) mais grave, se a tabela já possui um índice clusterizado (comum em tabelas com chave primária), o comando falharia, pois só pode haver um índice clusterizado por tabela. Além disso, criar um índice não é uma operação de manutenção periódica — é uma ação de design. A alternativa não atende ao objetivo de reduzir fragmentação de forma regular.
Alternativa B — ✅ Correta ⟵ GABARITO
ALTER INDEX ALL ON processo REORGANIZE é o comando correto para reorganizar todos os índices da tabela processo. O REORGANIZE reordena as páginas do índice, compacta o espaço livre e elimina a fragmentação lógica, tudo online (sem bloquear consultas) e com baixo consumo de recursos — perfeito para uma manutenção semanal em um banco com milhões de registros. É a operação de manutenção preventiva mais adequada para o cenário descrito.
Alternativa C — ❌ Incorreta
BACKUP LOG processo é um comando de backup do log de transações, não de manutenção de índices. Ele serve para registrar as transações e permitir recuperação point-in-time, mas não tem nenhum efeito sobre a fragmentação dos índices. Além disso, a sintaxe está errada: o backup de log é feito no nível do banco de dados (BACKUP LOG tribunal_db), não de uma tabela (processo). A alternativa confunde backup com manutenção de índices.
Alternativa D — ❌ Incorreta
UPDATE STATISTICS processo atualiza as estatísticas de distribuição de dados da tabela, que o otimizador de consultas usa para escolher planos de execução eficientes. Isso melhora a performance das consultas, mas não reduz a fragmentação dos índices — não mexe na estrutura física das páginas. É uma manutenção complementar, mas não atende ao que o enunciado pede (reduzir fragmentação). A banca explora a confusão entre "otimizar acesso" (estatísticas) e "reduzir fragmentação" (reorganizar/reconstruir).
Alternativa E — ❌ Incorreta
DROP INDEX processo é um comando destrutivo que remove um índice da tabela. A sintaxe está incompleta (faltaria o nome do índice, ex.: DROP INDEX IX_Processo ON processo), e a ação é exatamente o oposto do que se deseja: em vez de reduzir a fragmentação, eliminaria o índice, piorando a performance das consultas. Nenhuma manutenção preventiva usa DROP INDEX.
NÃO CAIA NESSA!
A banca adora trocar REORGANIZE por REBUILD ou por UPDATE STATISTICS. Lembre: REORGANIZE = manutenção leve, online, para fragmentação baixa (até 30%); REBUILD = reconstrução pesada, para fragmentação alta (acima de 30%); UPDATE STATISTICS = atualiza dados do otimizador, não mexe na estrutura física. Com treino, você identifica essas trocas de longe 💪
PEGA ESSA DICA!
Na prova, quando o enunciado falar em "manutenção periódica", "reduzir fragmentação" e "baixo impacto", a resposta quase sempre é REORGANIZE. Se falar em "fragmentação alta" ou "reconstruir", aí sim é REBUILD. E se falar em "otimizar consultas" sem mencionar fragmentação, desconfie de UPDATE STATISTICS.
Gabarito: letra B — ALTER INDEX ALL ON processo REORGANIZE é a manutenção correta para reduzir a fragmentação de índices de forma leve e regular.